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

代码随想录day28贪心算法2

文章目录

  • 122.买卖股票的最佳时机 II
  • 55. 跳跃游戏
  • 45.跳跃游戏 II
  • 1005.K次取反后最大化的数组和

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

题目链接
文章讲解

class Solution {
public:int maxProfit(vector<int>& prices) {int res=0;for(int i=0;i<prices.size()-1;i++){res+=max(prices[i+1]-prices[i],0);}return res;}
};

55. 跳跃游戏

题目链接
文章讲解

class Solution {
public:bool canJump(vector<int>& nums) {// Base case: 如果数组只有一个元素,直接返回trueif (nums.size() == 1) return true;int ans = nums[0];  // 以第一个元素的值作为初始的最大可达位置// 从第一个位置开始遍历数组for (int i = 1; i < nums.size(); i++) {// 如果当前位置 i 无法到达(i 大于 ans),则返回 falseif (i > ans) return false;// 更新最大可达位置ans = max(ans, i + nums[i]);// 如果可以到达最后一个位置,直接返回 trueif (ans >= nums.size() - 1) return true;}return false;  // 如果遍历结束后还没有到达最后一个位置,返回 false}
};

45.跳跃游戏 II

题目链接
文章讲解

class Solution {
public:int jump(vector<int>& nums) {// 初始化变量:cur表示当前能到达的最远位置,next表示下一步能到达的最远位置int cur = 0, next = 0;// 特殊情况:如果数组只有一个元素,已经在最后位置,跳跃次数为0if (nums.size() == 1) return 0;int res = 0;  // 记录跳跃的次数// 遍历整个数组for (int i = 0; i < nums.size(); i++) {// 更新当前能够到达的最远位置cur = max(cur, i + nums[i]);// 如果当前最远位置已经可以到达末尾,跳出循环if (cur >= nums.size() - 1) break;// 当i达到next时,意味着需要进行一次跳跃才能继续前进if (i == next) {res++;  // 跳跃次数增加next = cur;  // 更新下一跳能够到达的最远位置}}// 返回跳跃次数加1,因为跳跃结束后需要再加一次跳跃return res + 1;}
};

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

题目链接
文章讲解

class Solution {
public:int largestSumAfterKNegations(vector<int>& nums, int k) {// 首先对数组进行排序,将负数放到数组前面sort(nums.begin(), nums.end());// 遍历数组,对负数进行取反,直到操作次数 k 用完int j = 0;for (int i = 0; i < nums.size() && k > 0; i++) {if (nums[i] < 0) { // 如果当前元素是负数,取反并减少操作次数 knums[i] = -nums[i];k--; // 每次取反减少一个操作次数}else break; // 如果当前元素不再是负数,结束取反操作}// 排序一下数组,确保最小的数在数组前面sort(nums.begin(), nums.end());// 初始化总和变量int sum = 0;// 如果 k 仍为奇数,说明还剩一次操作,且最小的数已经是正数// 这时我们需要取反数组中的最小数来最大化和if (k % 2 == 1) {// 对数组中的第一个元素(最小的元素)进行取反nums[0] = -nums[0];}// 计算数组的总和for (int i = 0; i < nums.size(); i++) {sum += nums[i];}// 返回最终的总和return sum;}
};
http://www.xdnf.cn/news/1109719.html

相关文章:

  • 【AI News | 20250711】每日AI进展
  • Spring(四) 关于AOP的源码解析与思考
  • Java SE--抽象类和接口
  • 如何查看服务器当前用户的权限
  • GD32 CAN1和TIMER0同时开启问题
  • 深度学习15(GRU、LSTM+词嵌入+seq2seq+attention)
  • 电子基石:硬件工程师的器件手册 (五) - 三极管:电流放大的基石与开关的利刃
  • 7. JVM类加载器与双亲委派模型
  • 关于两种网络攻击方式XSS和CSRF
  • 二分法寻找无序序列的峰值
  • [Token]Token merging for Vision Generation
  • 学python,PyCharm 和 VSCode哪个更好用?
  • ChatRex RexSeek RexThinker: 结合多模态大语言模型的目标检测模型构建
  • vue3+vit+vue-router路由,侧边栏菜单,面包屑导航设置层级结构
  • 商业机密保卫战:如何让离职员工带不走的客户资源?
  • 六年级数学知识边界总结思考-上册
  • Rust Web 全栈开发(五):使用 sqlx 连接 MySQL 数据库
  • 【赵渝强老师】国产数据库TiDB的代理路由:TiProxy
  • 服务器怎么跑Python项目?
  • 【代码随想录】刷题笔记——哈希表篇
  • MySQL 中图标字符存储问题探究:使用外挂法,毕业论文——仙盟创梦IDE
  • shiro550反序列化漏洞复现(附带docker源)
  • 【Docker基础】Dockerfile指令速览:基础常用指令详解
  • Leetcode百题斩-二分搜索
  • 使用langgraph 构建RAG 智能问答代理
  • springboot AOP面向切面编程
  • 连接池深度解析:原理、实现与最佳实践
  • Hap包引用的Hsp报签名错误怎么解决
  • 使用ESM3蛋白质语言模型进行快速大规模结构预测
  • 每日一SQL 【销售分析 III】