当前位置: 首页 > news >正文

[D1,2] 贪心刷题

文章目录

  • 摆动序列
  • 最大子数组合
  • 买卖股票
  • 跳跃游戏
  • 跳跃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;}
}

相关文章:

  • 3、Kafka 核心架构拆解和总结
  • 私网IP地址范围解析与应用指南
  • 低代码 x AI,解锁数智化应用的创新引擎
  • 自组织映射SOM
  • C++_MD5算法
  • Diamond iO:实用 iO 的第一缕曙光
  • Java从入门到精通 - 程序流程控制
  • 数字化转型是往哪转?怎么转?
  • 单调栈原理
  • 数据库系统概论-基础理论
  • 信息安全 -- 什么是侧信道攻击
  • 《[CISCN 2022 初赛]ez_usb》
  • 六级阅读---2024.12 卷一 仔细阅读1
  • C++类对象的隐式类型转换和编译器返回值优化
  • 智能货架守护者:高精度倾角传感器如何重塑仓储安全管理
  • AI恶魔之眼使用说明书
  • 注意力机制(Attention)
  • C语言指针用法详解
  • openstack虚拟机状态异常处理
  • 数据结构、刷leetcode返航版--二分【有序】5/7
  • 印度外交秘书:“朱砂行动”不针对军事设施,无意升级事态
  • 一企业采购国产化肥冒充“挪威化肥”:7人被抓获
  • 招行:拟出资150亿元全资发起设立金融资产投资公司
  • 妻子藏匿一岁幼儿一年多不让丈夫见,法院发出人格权侵害禁令
  • 南通市委常委、市委秘书长童剑跨市调任常州市委常委、组织部部长
  • 国务院安委会办公室印发通知:坚决防范遏制重特大事故发生