贪心算法专题Day19

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

总收益可拆解为相邻单日正收益之和,局部最优(赚单日差价)能直接推导出全局最优

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

55. 跳跃游戏

每一步的贪心选择:扩展最远边界

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

45. 跳跃游戏 II

分层跳跃求最少次数

每次在最远边界之前 都记录 下次更新的值

到达边界后 跳一步 再更新边界,若边界未到达终点,则需要进入下一跳边界的寻找中

cpp 复制代码
    int jump(vector<int>& nums) {
        if(nums.size() == 1){
            return 0;
        }
        int farest = 0;
        int end = 0;
        int res = 0;
        for(int i = 0; i < nums.size() - 1; i++){
            farest = max(i + nums[i], farest);
            if(i == end){
                end = farest;
                res++;
            }
        }
        return res;
    }

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

第一步:排序

第二步:尽可能将所有负数取反

第三步:若k没用完,此时nums中所有数都大于等于0,取负两次相当于没变化,于是用k%2,若还余1,把最小的数取反

第四步:求和

cpp 复制代码
    int largestSumAfterKNegations(vector<int>& nums, int k) {
        sort(nums.begin(), nums.end());
        //对所有负数取反
        for(int i = 0; i < nums.size() && k > 0; i++){
            if(nums[i] < 0){
                nums[i] = nums[i] * -1;
                k--;
            }
            else{
                break;
            }
        }
        //若k有剩余,对最小的数取反
        if(k > 0){
            if(k % 2 == 1){
                sort(nums.begin(), nums.end());
                nums[0] = nums[0] * -1;
            }
        }
        //求和
        int sum = 0;
        for (int num : nums) {
            sum += num;
        }
        return sum;
    }
相关推荐
To_OC3 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
2401_841495644 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
爱刷碗的苏泓舒8 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
烬羽11 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
闪电悠米11 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
星空露珠11 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
QXWZ_IA13 小时前
桥梁数字孪生怎么落地?
人工智能·科技·算法·智能硬件·政务
Kel13 小时前
输出层与反分词(Output Layer & Detokenization)
人工智能·算法·架构
陕西企来客13 小时前
2026年7月技术好GEO优化方案:算法适配与内容策略
人工智能·算法·机器学习·技术好geo优化