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

122.买卖股票的最佳时机II

本题解法很巧妙,大家可以看题思考一下,在看题解。
https://programmercarl.com/0122.买卖股票的最佳时机II.html

/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
    let res = 0;
    for (let i=0;i<prices.length-1;i++) {
        if (prices[i]>=prices[i+1]) {
            continue;
        }
        let diff = prices[i+1]-prices[i];
        res += diff;
    }
    return res;
};
  1. 跳跃游戏

本题如果没接触过,很难想到,所以不要自己憋时间太久,读题思考一会,没思路立刻看题解
https://programmercarl.com/0055.跳跃游戏.html

/**
 * @param {number[]} nums
 * @return {boolean}
 */
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;
};

45.跳跃游戏II

本题同样不容易想出来。贪心就是这样,有的时候 会感觉简单到离谱,有时候,难的不行,主要是不容易想到。
https://programmercarl.com/0045.跳跃游戏II.html

难,根据第二题想不到这题
/**
 * @param {number[]} nums
 * @return {number}
 */
var jump = function(nums) {
    if (nums.length === 1) return 0;
    let next = 0;
    let res = 0;
    let cur = 0;
    for (let i =0;i<nums.length;i++) {
        next = Math.max(nums[i]+i,next);
        if (i === cur) {
            res++;
            cur = next;
            if (cur>=nums.length-1) break;
        } 
    }
    return res;
};
posted @ 2024-06-10 22:22  YuanYF6  阅读(0)  评论(0编辑  收藏  举报