代码随想录day31【贪心算法】买卖股票的最佳时机2 跳跃游戏 跳跃游戏2

买卖股票的最佳时机2

力扣题目链接
局部最优:买卖股票遇到正数,收集下来
全局最优: 收集到最大利润

var maxProfit = function(prices) {
    let res=0
    for(let i=1;i<prices.length;i++){
        res +=Math.max(prices[i]-prices[i-1],0)
    }
    return res
};

跳跃游戏

力扣题目
思路:
局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点

var canJump = function(nums) {
    let cover=0
    if(nums.length===1) return true
    for(let i=0;i<=cover;i++){
        cover=Math.max(i+nums[i],cover)
        if(cover>=(nums.length-1)){
            return true
        }
    }
    
    return false
};

跳跃游戏2

力扣题目链接
思路:
同样转换为覆盖范围,而不是纠结跳几步
需要统计两个覆盖范围,当前这一步的最大覆盖和下一步最大覆盖。

var jump = function(nums) {
    let next=0
    let cur=0
    let res=0
    for(let i=0;i<nums.length;i++){
        next=Math.max(i+nums[i],next)
        if(i===cur ){//
            if( cur !== nums.length-1){
                res++
                cur=next
                if(cur >=nums.length-1){
                    break
                }
            }else{
                break
            }
            
        }
    }
    return res
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容