[D1,2] 贪心刷题

摆动序列

不像是贪心,只要抓住摆动这个点,前一个上升,那下一个就要下降,记录上一次的状态为1的话,那下一次就要更新为-1,如果上一次为1,这次还为1那就说明不是摆动的

最大子数组合

一层循环,如果当前和<=0,那么就将当前值置为0,如果当前和>已经保存的res,那么更新res

买卖股票

可以多次买入卖出
等价公式:3-1 = 3-2+2-1 因此可以直接计算每天的差值,相加就行

跳跃游戏

重点在于

  1. 当前位置i+当前位置可以跳到的最大位置就是判断的依据 cover = max(i+nums[i], cover);
  2. 当前位置i取多少就是循环的结束条件 for(int i=0; i<=cover; i++)

跳跃2

要想明白两个点
一个是 if(i==cur) 和 cur=next;这两句就隐含了跳跃不会超出覆盖范围
一个是如果不按 for(int i=0; i<nums.size(); i++)这个循环来,若使用 i <= cover 作为循环条件,可能会提前终止遍历,从而无法获取完整的信息。例如,后续的某个位置可能只需一次跳跃就能跳到更远的地方,进而减少总的跳跃次数,但由于提前终止遍历,这个信息就会被遗漏。

for(int i=0; i<nums.size(); i++){
    next = max(next, i+nums[i]);
    if(i==cur){
        res++;
        if(next>=nums.size()-1) break;
        cur=next;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值