代码随想录算法训练营第二十八天| 122.买卖股票的最佳时机II 、 55. 跳跃游戏 、 45.跳跃游戏II 、1005.K次取反后最大化的数组和

41 阅读1分钟

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

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

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

55. 跳跃游戏

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

var canJump = function(nums) {
    var 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

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

var jump = function(nums) {
    if(nums.length ===1) return 0;
    var cur =0; next =0;
    var res =0;
    for(let i =0;i <nums.length;i++){
        next = Math.max(next,nums[i] + i);
        if(i === cur && cur !== nums.length-1){
            res++;
            cur = next;
        }
    }
    return res;
};

1005.K次取反后最大化的数组和

相关链接:题目链接文章讲解 视频讲解

解题思路

代码实现

var largestSumAfterKNegations = function(nums, k) {
    nums.sort((a, b)=>{
        return a-b;
    })
    if(nums[0] > 0  && k%2==1 ){
        nums[0] = -nums[0]
    }else{
        var count=0;
        for(let i=0;i<k;i++){
                if(nums[i] <0){
                    count++;
                    nums[i] = -nums[i];
                }
            }
        nums.sort((a, b)=>{
            return a-b;
        })
        if((k-count) %2 ===1 ){
            nums[0] = -nums[0]
        }
    }
    var res =0;
    for(let i=0;i<nums.length;i++){
        res += nums[i];
    }
    return res;
};