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

力扣hot100 -- 贪心算法

👂 ▶ 逍遥叹 - 胡歌&沈以城【Mashup】 (163.com) 

👂 庐州月 - 许嵩 - 单曲 - 网易云音乐

2.7 小时,加上写博客,4 道题,😂 -- 希望二刷时,可以 3 小时,8 道题....

目录

🍉买卖股票的最佳时机

🌼跳跃游戏

🍓跳跃游戏 II

🎂划分字母区间


🍉买卖股票的最佳时机

121. 买卖股票的最佳时机 - 力扣(LeetCode)

贪心:维护目前为止的最小值

class Solution {
public:int maxProfit(vector<int>& prices) {int minPrice = 1e4; // 维护一个最小值int ans = 0;for (auto x : prices) {minPrice = min(minPrice, x);ans = max(ans, x - minPrice);}ans = ans < 0 ? 0 : ans;return ans;}
};

🌼跳跃游戏

55. 跳跃游戏 - 力扣(LeetCode)

贪心:维护可以跳到的最大索引(下标)

class Solution {
public:bool canJump(vector<int>& nums) {int Max = 0; // 维护当前可以跳到的最远下标for (int i = 0; i < nums.size(); ++i) {// 当前索引 i > Max, 说明无法到达if (i > Max)return false;if (Max >= nums.size() - 1)break;Max = max(Max, i + nums[i]);}return true;}
};// 1 2 5 1 1 0 3 1 0  1 1 1

🍓跳跃游戏 II

45. 跳跃游戏 II - 力扣(LeetCode)

题目保证 “可以到达 nums[n - 1]”

每次跳跃前,先计算最大范围,然后依次计算这个范围内

各个坐标所能到达的最远的点 maxPos,作为本次跳跃的目的地 end....

class Solution {
public:int jump(vector<int>& nums) {int maxPos = 0; // 维护最远的点int ans = 0, end = 0;// 不是 < nums.size(), 最后一个元素不用继续跳了for (int i = 0; i < nums.size() - 1; ++i) { // 最大范围 [i, end]maxPos = max(maxPos, i + nums[i]); // 维护最远距离if (i == end) { // 这一跳结束end = maxPos;ans++; // 只有到达 end, 才更新步数}}return ans;}
};// 1 1
// 1

🎂划分字母区间

763. 划分字母区间 - 力扣(LeetCode)

第一次遍历 O(n),用一个数组 last[26] 维护每个字母最后出现的位置

当前子串范围 [start, end]

第 2 次遍历 O(n),逐个遍历 i

动态地用 last[s[i] - 'a'] 更新 end,直到 i == end,满足当前子串要求

class Solution {
public:vector<int> partitionLabels(string s) {vector<int> ans;int last[26];for (int i = 0; i < s.size(); ++i)last[s[i] - 'a'] = i; // 字母 s[i] 最后出现位置int start = 0, end = 0; // 当前划分范围for (int i = 0; i < s.size(); ++i) {end = max(end, last[s[i] - 'a']); // 更新最后出现位置if (i == end) {ans.push_back(end - start + 1);start = end + 1;}}return ans;}
};
http://www.lryc.cn/news/389002.html

相关文章:

  • P2P文件传输协议介绍
  • Spring Boot集成Spring Mobile快速入门Demo
  • 走进开源企业 | 湖南大学OpenHarmony技术实训活动在开鸿智谷顺利举办!
  • TCP单进程循环服务器程序与单进程客户端程序
  • QT+winodow 代码适配调试总结(二)
  • 百家讲坛 | 裴伟伟:企业中安全团队应当如何反馈漏洞
  • 巧用Fiddler中的Comments提升接口测试效率
  • 停车场车牌识别计费系统,用Python如何实现?
  • Linux内核——Linux内核体系模式(二)
  • Spring MVC的高级功能——异常处理(一)简单异常处理器
  • 【面试干货】Static关键字的用法详解
  • 软件工程实验
  • 对于复杂的网页布局,如多列布局和网格布局,CSS 有哪些最佳实践和技巧?
  • Spring Boot中集成Redis实现缓存功能
  • arco disign vue 日期组件的样式穿透
  • 【深度学习】pytorch训练中的一个大坑
  • python全局解释器锁(GIL)
  • 无人机的起源
  • 专题六:Spring源码之初始化容器BeanFactory
  • 缓存双写一致性(笔记)
  • 运动馆预约管理系统设计
  • 第五届计算机、大数据与人工智能国际会议(ICCBD+AI 2024)
  • 高效的向量搜索算法——分层可导航小世界图(HNSW)
  • 【MySQL备份】Percona XtraBackup全量备份实战篇
  • 港口危险货物安全管理人员考试题库(含答案)
  • 什么是 JVM( Java 虚拟机),它在 Java 程序执行中扮演什么角色?
  • Python容器 之 列表--下标和切片
  • Docker 运行Nacos无法访问地址解决方法
  • Stable Diffusion 商业变现与绘画大模型多场景实战
  • [CocosCreator]CocosCreator网络通信:https + websocket + protobuf