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

每日一题(leetcode2952):添加硬币最小数量 初识贪心算法

这道题如果整体去思考,情况会比较复杂。因此我们考虑使用贪心算法。

1 我们可以假定一个X,认为[1,X-1]区间的金额都可以取到,不断去扩张X直到大于target。(这里为什么要用[1,X-1]而不是[1,X],总的来说是方便,潜在思想是1,2,4,8,....n这样下去最后能够构成的数的区间是是[1,2^(n+1)-1]),和这里如出一辙,X就像一个桥梁,成为了一个边界)

2 我们会先将原coins数组进行从小到大排序,接着逐个去判断与X的大小关系,如果小于等于,那么那么[1,X]会扩展为[1,X+coins[index]](index为当前数索引),那么此时可以构成的数为[1,X+coins[index]-1](从这里可以感受到X桥梁的作用);如果是大于,那么就需要添加一个X,那么[1,X]会扩展为[1,2X](index为当前数索引),那么此时可以构成的数为[1,2X-1]。就这样,直到循环结束。

可以看看官方的讲解:

class Solution {
public:int minimumAddedCoins(vector<int>& coins, int target) {sort(coins.begin(),coins.end());int length=coins.size();int index=0;int res=0;int x=1;while(x<=target){if(index<length && coins[index]<=x){x+=coins[index];index++;}else{x<<=1;res++;}}return res;}
};

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

相关文章:

  • [Errno 2] No such file or directory: ‘g++‘
  • go的通信Channel
  • 手写红黑树【数据结构】
  • [蓝桥杯练习]通电
  • 安全算法 - 摘要算法
  • 操作系统:动静态库
  • 车载电子电器架构 —— 局部网络管理汇总
  • 网络安全 | 什么是DDoS攻击?
  • [Godot] 3D拾取
  • 知识融合:知识图谱构建的关键技术
  • 外贸建站:WordPress搭建外贸独立站零基础自建站完整教程(2024)
  • 【教程】Kotlin语言学习笔记(五)——Lambda表达式与条件控制
  • C++的并发世界(三)——线程对象生命周期
  • SAD法(附python实现)和Siamese神经网络计算图像的视差图
  • 基于DWT(离散小波变换)的图像加密水印算法,Matlab实现
  • 【威胁情报综述阅读3】Cyber Threat Intelligence Mining for Proactive Cybersecurity Defense
  • 在编程中使用中文到底该不该??
  • PyQt6从入门到放弃
  • PhpWord导入试卷
  • C# 运算符重载 之前的小总结
  • XenCenter 2024 创建一个虚拟机
  • tomcat 知多少
  • 【详细讲解语言模型的原理、实战与评估】
  • Predict the Next “X” ,第四范式发布先知AIOS 5.0
  • PCL使用4PCS配准
  • 【六 (2)机器学习-机器学习建模步骤/kaggle房价回归实战】
  • vue源码解析——vue如何将template转换为render函数
  • 深入理解zookeeper
  • 【漏洞复现】WordPress Plugin LearnDash LMS 敏感信息暴漏
  • phpmyadmin页面getshell