代码随想录算法训练营DAY28第八章 贪心算法 part02

目录

[122. 买卖股票的最佳时机 II](#122. 买卖股票的最佳时机 II)

[55. 跳跃游戏](#55. 跳跃游戏)

[45. 跳跃游戏 II](#45. 跳跃游戏 II)

[1005. K 次取反后最大化的数组和](#1005. K 次取反后最大化的数组和)


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

很难解释原理。一开始想的是前缀和,后来打草稿发现是相邻差,验证了发现样例中没有反例,结果通过了

cpp 复制代码
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int ans=0;
        for(int i=1;i<prices.size();i++){
            if(prices[i]-prices[i-1]>0){
                ans+=prices[i]-prices[i-1];
            }
        }
        return ans;
    }
};

55. 跳跃游戏

记录覆盖范围

cpp 复制代码
class Solution {
public:
    bool canJump(vector<int>& nums) {
        int far=0;
        for(int i=0;i<nums.size();i++){
            if(far<i)return false;
            far=max(far,i+nums[i]);
            if(far==nums.size()-1)return true;
        }
        return true;
    }
};

45. 跳跃游戏 II

cpp 复制代码
class Solution {
public:
    int jump(vector<int>& nums) {
        if(nums.size()==1)return 0;
        int ans=0;
        int far=0;
        int index=0;
        for(int i=0;i<nums.size()-1;i++){
            far=max(far,i+nums[i]);
            if(i==index){
                ans++;
                index=far;
            }
        }
        return ans;
    }
};

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

cpp 复制代码
class Solution {
public:
    int largestSumAfterKNegations(vector<int>& nums, int k) {
        sort(nums.begin(),nums.end());
        for(int i=0;i<nums.size()&&k;i++){
            if(nums[i]<0){
                nums[i]=-nums[i];
                k--;
            }
        }
        int sum=0;
        for(int t:nums){
            sum+=t;
        }
        if(k%2){
            int minnum=nums[0];
            for(int t:nums){
                minnum=min(minnum,t);
            }
            sum=sum-minnum*2;
        }
        return sum;
    }
};
相关推荐
稚南城才子,乌衣巷风流17 分钟前
ST 表(Sparse Table)算法详解:原理、实现与应用
算法
hold?fish:palm23 分钟前
9 找到字符串中所有字母异位词
c++·算法·leetcode
Sw1zzle1 小时前
算法入门(六):贪心算法 - 基础入门(Leetcode 121/455/860/376/738)
算法·leetcode·贪心算法
青山木1 小时前
Hot 100 --- 岛屿数量
java·数据结构·算法·leetcode·深度优先·广度优先
不会就选b1 小时前
算法日常・每日刷题--<归并排序>1
数据结构·算法
危桥带雨2 小时前
排序算法(快排、归并、计数、基数排序)
数据结构·算法·排序算法
啦啦啦啦啦zzzz2 小时前
算法:回溯算法
c++·算法·leetcode
IT探索2 小时前
Linux 查找文件指令总结
linux·算法
Lumos1863 小时前
51单片机从零到实战(完结)——后续学习路线建议
算法