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

目录

122.买卖股票的最佳时机

思路

代码

55.跳跃游戏

思路

代码

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

思路

代码


122.买卖股票的最佳时机

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

代码随想录

思路

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

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

假如第 0 天买入,第 3 天卖出,那么利润为:prices3 - prices0。

相当于(prices3 - prices2) + (prices2 - prices1) + (prices1 - prices0)。

此时就是把利润分解为每天为单位的维度,而不是从 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,那第一步能跳的地方自然就是nums0,如果第一步能跳的范围里跳不到终点,就遍历第一步能跳的范围,来扩大全局能跳的范围,如果不行,就遍历第二步能跳的范围, 继续扩大全局能跳的范围。

代码
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
相关推荐
benchmark_cc31 分钟前
A 股、港股、美股如何建立统一的标的主数据格式?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
ZhengEnCi1 小时前
大模型的分类到底怎么分:从基础模型到推理模型、从通用到专用的完整图谱
算法
维克兜率天1 小时前
【维克】趋势型CTA:期货市场的“追涨杀跌“
人工智能·python
取名真是2 小时前
Python 算法知识点从基础到进阶
开发语言·python·算法
梦想不只是梦与想2 小时前
PyTorch、CPU、GPU、CUDA
人工智能·pytorch·python·深度学习·机器学习·cuda
数字融合2 小时前
透明化视频孪生危化安全管控解决方案
人工智能·python·安全
罗西的思考2 小时前
【轻量化复刻大模型 / KIMI K3】KDA 模块交互式演示
人工智能·算法·机器学习
别问!问就是全会4 小时前
Jupyter Notebook 安装包下载|单元格分块运行,图表直接内嵌
ide·python·其他·jupyter
深蓝AI4 小时前
Python 缓存击穿实测:16 个并发请求如何只回源 1 次
python
benchmark_cc4 小时前
用 00700.HK 做港股行情清洗:字段核对、校验与个人量化开发实践
python·数据分析·pandas·量化交易·股票数据·quantdash