第一题画图就懂了 ,第二、三题,想不到,看了答案也换了很久,大致思路,先求MAX,如果i到达了CUR,就把CUR更新成更新的。

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

class Solution {
    public int maxProfit(int[] prices) {
        if (prices.length == 1) {
            return 0;
        }
        int interest = 0;
        int pre = 0, count = 0, cur = 1;
        for (cur = 1; cur < prices.length; cur++) {
            count = prices[cur] - prices[pre];
            if (count > 0) {
                interest += count;
            }
            pre++;
        }
        return interest;
    }
}

55. 跳跃游戏

public boolean canJump(int[] nums) {
        if (nums.length == 1) {
            return true;
        }
        int cover = nums[0];
        for (int i = 0; i <= cover; i++) {
            // cover 表示可以跳的范围
            // i : 是跳了几步
            // nums[i] : 因为跳了i步到达了i,然后nums[i]就是下一步可以跳的
            // 然后找最大的
            // i + nums[i] : 是最远的下标
            cover = Math.max(cover, i + nums[i]);
            if (cover >= nums.length - 1) {
                return true;
            }
        }
        return false;
    }

45. 跳跃游戏 II

public int jump(int[] nums) {
        int times = 0;
        int maxIndex = 0;
        int end = maxIndex;
        for (int i = 0; i < nums.length-1; i++) {
            maxIndex = Math.max(maxIndex, i + nums[i]);
            if (i == end) {
                end = maxIndex;
                times++;
            }
        }
        return times;
    }
posted @ 2023-01-13 15:57  维萨斯  阅读(19)  评论(0)    收藏  举报