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

贪心算法精品题

1.找钱问题

本题的贪心策略在于我们希望就可能的保留作用大的5元

class Solution {
public:bool lemonadeChange(vector<int>& bills) {std::map<int ,int> _map;for(auto ch:bills){if(ch == 5) _map[ch]++;else if(ch == 10){if(_map[5] == 0) return false;else{_map[5]--;_map[ch]++;}}else if(ch == 20){//这里的判断_map [5]!= 0 && _map[10] != 0其实是贪心我用10元代替两张5if(_map [5]!= 0 && _map[10] != 0){_map[5]--;_map[10]--;_map[ch]++;}else if(_map[5] >= 3){_map[5] -= 3;_map[ch]++;}else return false;}}return true;}
};

题目链接:860. 柠檬水找零 - 力扣(LeetCode)

2.最大数

这道题涉及一个知识点:一个数比另一个数大那么转换为字符串以后对应的大小关系并不会改变

那么对于 string A = "12"  string B = "23"  string C = "14".如果进行排序由于BA大于AB故B位于A的前面由于CA大于AC所以C位于A的前面    故顺序为:B C A那么BCA是不是他们组成的最大数呢这里显然是,但是要以此类推就能知道这题我们只需要重载排序规则就能完成,当然这题还存在一些便捷条件比如如个排序数组的开头是“0”说明这些数着的最大值就是0

class Solution {
public:static bool compare(int a,int b){std::string A = std::to_string(a);std::string B = std::to_string(b);std::string AB = A+B;std::string BA = B+A;return AB>BA;} string largestNumber(vector<int>& nums) {sort(nums.begin(),nums.end(),compare);string ret;for(auto ch:nums) ret+=std::to_string(ch);return ret[0] == '0'?"0":ret;}
};

题目链接:179. 最大数 - 力扣(LeetCode)

3.摆动序列

这个题目可以理解为找到一个子序列,满足子序列内的元素时先增在减或者先减在增的,就类似正弦函数。

我们怎么才能找到最长的满足条件的子序列呢,我先做了一个我就找极大值和极小值来组成这个子序列,然后就过了,很神奇,然后看了看题解才明白为什么

看这张图,我们发现其实有三条可选择的路径但是其实本质上都是一样的,都是上升区间取一个值然后在相邻的下降区间取一个比自己小的数

那么我们的贪心策略就是直接去上升区间和下降区间的端点也就是极大值和极小值。

class Solution {
public:int wiggleMaxLength(vector<int>& nums) {int left = 0,right = 0;int ret = 0;for(int i = 0;i<nums.size()-1;i++){right = nums[i+1]-nums[i];if(right == 0) continue;else if(right*left<=0){left = right;ret++;}else continue;}return ret+1;}
};

http://www.lryc.cn/news/543909.html

相关文章:

  • sql server 复制从备份初始化数据
  • 【蓝桥杯】1.k倍区间
  • Qt互斥锁(QMutex)的使用、QMutexLocker的使用
  • 具身智能(Embodied AI)的物理交互基准测试:构建真实世界的智能体评估体系
  • Javaweb后端数据库多表关系一对多,外键,一对一
  • 鸿蒙 ArkUI 实现敲木鱼小游戏
  • cv2.solvePnP 报错 求相机位姿
  • Linux实操——在服务器上直接从百度网盘下载(/上传)文件
  • 2004-2024年光刻机系统及性能研究领域国内外发展历史、差距、研究难点热点、进展突破及下一个十年研究热点方向2025.2.27
  • 请求Geoserver的WTMS服务返回200不返回图片问题-跨域导致
  • ubuntu配置jmeter
  • 《Qt动画编程实战:轻松实现头像旋转效果》
  • 【Mac电脑本地部署Deepseek-r1:详细教程与Openwebui配置指南】
  • DeepSeek开源技术全景解析:从硬件榨取到AI民主化革命
  • WPF12-MVVM
  • 一个原教旨的多路径 TCP
  • 跟着AI学vue第十三章
  • labview中VISA串口出现异常的解决方案
  • StableDiffusion本地部署 2
  • unity学习61:UI布局layout
  • BRD4缺失通过GRP78灭活内质网应激,延缓脱氢表雄酮诱导的卵巢颗粒细胞凋亡
  • Jmeter插件下载及安装
  • 【Swift 算法实战】判断数组中是否存在重复元素
  • Spock框架:让单元测试更优雅的高效武器
  • 【前端基础】Day 4 CSS盒子模型
  • 补题蓝桥杯14届JavaB组第4题
  • kotlin的函数标准库使用
  • Visual Studio Code 跨平台安装与配置指南(附官方下载链接)
  • STM32学习【4】ARM汇编(够用)
  • Linux驱动开发实战(一):LED控制驱动详解