代码随想录算法训练营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;
    }
};
相关推荐
倒头就睡的小比特3 天前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
猎头南楼3 天前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
旖旎夜光3 天前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
wzdark3 天前
大规模并行计算中的负载均衡算法研究4
算法
Because_of_Her13 天前
并查集-听课笔记
笔记·算法·并查集
码流子3 天前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
another heaven3 天前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
wzdark3 天前
从算法设计模式看编程思维的抽象能力4
算法
2601_962218613 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法