代码随想录算法训练营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;
    }
};
相关推荐
不爱学英文的码字机器1 小时前
推荐算法梳理,六种主流模型与九步训练流程
算法·机器学习·推荐算法
白狐_7982 小时前
408数据结构第5章:树与二叉树②——遍历、线索树、森林与哈夫曼
数据结构·算法·深度优先
致Great5 小时前
科研人的 AI,不该只回答问题:我用字节TraeWork 跑了一遍真实研究任务
算法
纵有疾風起5 小时前
线性表的定义与基本操作 — 从逻辑结构到 ADT 接口
数据结构·算法·408·线性表·adt
测试_AI_一辰6 小时前
AI Agent 评测最隐蔽的坑-记忆
人工智能·算法·ai·自动化·ai编程
lucas_AI6 小时前
给YOLO检测器插 LoRA,'插对地方'比'插什么'更要命
人工智能·算法
LuminousCPP6 小时前
数据结构-时间与复杂度|时间/空间复杂度 + 两道力扣练习 + 二分查找复盘
c语言·数据结构·经验分享·算法·leetcode
Nil2086 小时前
leetcode 三数之和
数据结构·算法·leetcode
小小龙学IT7 小时前
C++ std::vector 底层实现深度解析:内存布局、扩容策略、移动语义与迭代器失效
开发语言·c++·算法
noipp7 小时前
推荐题目:洛谷 P16689 出征
java·开发语言·数据结构·c++·算法·洛谷·luogu