算法训练营Day32

122. 买卖股票的最佳时机 II - 力扣(LeetCode)

class Solution {
    public int maxProfit(int[] prices) {
        int res=0;
        for(int i =1;i0){
                res+=prices[i]-prices[i-1];
            }
        
        }
        return res;
    }
}

55. 跳跃游戏 - 力扣(LeetCode)

局部最优,每次遍历都找最大的覆盖范围,

全局最优,到最后就是整个数组跳跃的最大范围。

public class Solution {
    public boolean canJump(int[] nums) {
        
        int range = 0;
        for(int i = 0;i<=range;i++){
            range = Math.max(range,i+nums[i]);
            if(range>=nums.length-1){
                return true;
            }
        }
        return false;
    }
}

45. 跳跃游戏 II - 力扣(LeetCode)

跳跃几次,更新几次覆盖范围

因为这个范围可以一次选择跳动的,更改范围,说明一次挑不到,要再跳

所以count++再新范围这里。

class Solution {
    public int jump(int[] nums) {
        if(nums.length==1){
            return 0;
        }
        int range = 0;
        int count = 0;
        int maxRange = 0;
        for(int i =0;i<=range;i++){
            maxRange = Math.max(maxRange,i+nums[i]);
            if(maxRange >= nums.length-1){//养成类似范围写成>=的习惯,不容易报错
                count++;
                break;
            }
            if(i==range){
                range = maxRange;
                count++;
            }
        }
        return count;
    }
}

你可能感兴趣的:(算法,leetcode,数据结构)