代码随想录算法训练营第三十五天 | 122.买卖股票的最佳时机 II、55.跳跃游戏、45.跳跃游戏 II

目录

122.买卖股票的最佳时机

思路

代码

55.跳跃游戏

思路

代码

[45.跳跃问题 II](#45.跳跃问题 II)

思路

代码


122.买卖股票的最佳时机

本题解法很巧妙,大家可以看题思考一下,在看题解。

代码随想录

思路

贪心这种东西,毫无章法可言, 完全就是如果想不到,想破脑袋都想不到,如果有思路,刷刷就写出来,感觉完全就是看你的刷题量,和你脑瓜子灵不灵光。

像这道题,(其实买卖股票的最佳时机有很多到衍生题,在力扣上可以看到),如果想到其实最终利润是可以分解的,那么本题就很容易了!

假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。

相当于(prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])。

此时就是把利润分解为每天为单位的维度,而不是从 0 天到第 3 天整体去考虑!

我只能说,好家伙。。。(每日崩溃1/1)

代码
python 复制代码
class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        result = 0
        for i in range(1, len(prices)):
            result += max(prices[i] - prices[i - 1], 0)
        return result

55.跳跃游戏

本题如果没接触过,很难想到,所以不要自己憋时间太久,读题思考一会,没思路立刻看题解

代码随想录

思路

看到没,连Carl哥都说了,没接触过根本想不到,这东西完全看你见过的题多不多。操千曲而后晓声,观千剑而后识器。

其实跳几步无所谓,关键在于可跳的覆盖范围!

不一定非要明确一次究竟跳几步,每次取最大跳跃步数,这个就是可以跳跃的覆盖范围。

这个范围内,别管是怎么跳的,反正一定可以跳过来。

那么这个问题就转化为跳跃覆盖范围究竟可不可以覆盖到终点!

代码
python 复制代码
class Solution:
    def canJump(self, nums: List[int]) -> bool:
        cover = 0
        if len(nums) == 1: return True
        i = 0
        # python不支持动态修改for循环中变量,使用while循环代替
        while i <= cover:
            cover = max(i + nums[i], cover)
            if cover >= len(nums) - 1: return True
            i += 1
        return False

45.跳跃问题 II

本题同样不容易想出来。贪心就是这样,有的时候 会感觉简单到离谱,有时候,难的不行,主要是不容易想到。

代码随想录

思路

从覆盖范围出发,不管怎么跳,覆盖范围内一定是可以跳到的,以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最少步数!

如果给的数组长度为1,直接return 0 ,如果不为1,那第一步能跳的地方自然就是nums[0],如果第一步能跳的范围里跳不到终点,就遍历第一步能跳的范围,来扩大全局能跳的范围,如果不行,就遍历第二步能跳的范围, 继续扩大全局能跳的范围。

代码
python 复制代码
from typing import List


class Solution:
    def jump(self, nums: List[int]):
        max_cover = nums[0]
        i = 0
        step = 1
        if len(nums) == 1:
            return 0

        while max_cover < len(nums) - 1:
            step += 1
            cover = max_cover
            for i in range(i + 1, cover + 1):
                max_cover = max(max_cover, i + nums[i])

        return step
相关推荐
笃励11 分钟前
Java面试题二
java·开发语言·python
ん贤14 分钟前
贪心算法.
算法·贪心算法
cndes22 分钟前
大数据算法的思维
大数据·算法·支持向量机
一颗星星辰1 小时前
Python | 第九章 | 排序和查找
服务器·网络·python
打码人的日常分享1 小时前
企业人力资源管理,人事档案管理,绩效考核,五险一金,招聘培训,薪酬管理一体化管理系统(源码)
java·数据库·python·需求分析·规格说明书
27669582921 小时前
京东e卡滑块 分析
java·javascript·python·node.js·go·滑块·京东
unix2linux1 小时前
Parade Series - SHA256
linux·python·mysql·shell
巽星石2 小时前
【Blender Python】7.一些运算、三角函数以及随机
python·blender·三角函数·随机·环形阵列
CSXB992 小时前
一、Python(介绍、环境搭建)
开发语言·python·测试工具·集成测试
Mopes__2 小时前
Python | Leetcode Python题解之第461题汉明距离
python·leetcode·题解