lc刷题总结(贪心算法第一次)

    lc455. 分发饼干 lc376. 摆动序列
class Solution {
          
   
public:
    int wiggleMaxLength(vector<int>& nums) {
          
   
        if(nums.size()<=1) return nums.size();
        int ans=1;
        int prediff=0;
        int curdiff=0;
        for(int i=0;i<nums.size()-1;i++)
        {
          
   
            curdiff=nums[i+1]-nums[i];
            if((prediff<=0&&curdiff>0)||(prediff>=0&&curdiff<0))
            {
          
   
                prediff=curdiff;
                ans++;
            }
        }
        return ans;
    }
};
    lc53. 最大子数组和 lc122. 买卖股票的最佳时机II:把利润拆分成每一天的 lc55. 跳跃游戏 lc45. 跳跃游戏 II:当前跳和下一跳 lc1005. K 次取反后最大化的数组和
class Solution {
          
   
public:
    static bool cmp(int a,int b)
    {
          
   
        return abs(a)>abs(b);
    }
    int largestSumAfterKNegations(vector<int>& nums, int k) {
          
   
        sort(nums.begin(),nums.end(),cmp);
        for(int i=0;i<nums.size();i++)
        {
          
   
            if(nums[i]<0&&k>0)
            {
          
   
                nums[i]*=-1;
                k--;
                if(k<=0) break;
            }
        }
        if(k%2==1)
        {
          
   
            nums[nums.size()-1]*=-1;
        }
        int ans=0;
        for(int x:nums)
        {
          
   
            ans+=x;
        }
        return ans;
    }
};
    lc134. 加油站 lc135. 分发糖果:右>左和左>右 lc860. 柠檬水找零 lc406. 根据升高重建队列 lc452. 用最少数量的箭引爆气球 lc435. 无重叠区间 lc763. 划分字母区间 lc56. 合并区间 lc738. 单调递增的数字 lc714. 买卖股票的最佳时机含手续费 lc968. 监控二叉树
经验分享 程序员 微信小程序 职场和发展