第八章 贪心算法 part02(● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II )

学习目标:

● 122.买卖股票的最佳时机II
● 55. 跳跃游戏
● 45.跳跃游戏II


学习内容:● 122.买卖股票的最佳时机II

https://programmercarl.com/0122.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BAII.html

算出每天差值,取正数
var maxProfit = function(prices) {
    let result = 0;
    for(let i=1;i<prices.length;i++){
        result+=Math.max(prices[i]-prices[i-1],0)
    }
    return result
};

学习内容:● 55. 跳跃游戏

https://programmercarl.com/0055.%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8F.html

第一遍,题都没读懂
tip:覆盖范围
for(let i=0;i<=cover;i++){//i<=cover,i小于等于覆盖范围
var canJump = function(nums) {
    let cover = 0
    if(nums.length==1) return true
    for(let i=0;i<=cover;i++){
        cover=Math.max(cover,i+nums[i])
        if(cover>=nums.length-1)return true
    }
    return false
};

学习内容:● 45.跳跃游戏II

https://programmercarl.com/0045.%E8%B7%B3%E8%B7%83%E6%B8%B8%E6%88%8FII.html
tip:以最小的步数增加最大的覆盖范围,直到覆盖范围覆盖了终点

视频看了两遍,没看懂、
这题就是没懂过
var jump = function(nums) {
    let curIndex = 0
    let nextIndex = 0
    let steps = 0
    for(let i = 0; i < nums.length - 1; i++) {
        nextIndex = Math.max(nums[i] + i, nextIndex)
        if(i === curIndex) {
            curIndex = nextIndex
            steps++
        }
    }

    return steps
};

你可能感兴趣的:(算法笔记,贪心算法,算法)