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

7月21日,贪心练习

大家好呀,今天带来一些贪心算法的应用解题、

一,柠檬水找零

. - 力扣(LeetCode)

解析:

本题的贪心体现在对于20美元的处理上,我们总是优先把功能较少的10元作为找零,这样可以让5元用处更大

Java版

class Solution {public boolean lemonadeChange(int[] bills) {int M5=0, M10=0;for (int i = 0; i < bills.length; i++) {if (bills[i] == 5) {M5++;}if (bills[i] == 10) {if (M5 == 0) {return false;}M5--;M10++;}if (bills[i] == 20) {if (M10 > 0 && M5 > 0) {M10--;M5--;} else if (M5 >= 3) {M5 -= 3;} else {return false;}}}return true;}
}

二,将数组和减半的最小次数

. - 力扣(LeetCode)

解析:

思路非常简单,只需每次找出数组最大的数减半即可,但是需要注意不能采用每次遍历的方法来找最大值,会超时,可以采用堆的方法,构建一个大堆即可

Java版

class Solution {public int halveArray(int[] nums) {PriorityQueue<Double> q = new PriorityQueue<>(Comparator.reverseOrder());double sum = 0;for (double num : nums) {sum += num;q.offer(num);}sum/=2.0;int count = 0;while (sum>0) {Double val = q.poll();double t = val / 2;sum -= t;q.offer(t);count++;}return count;}
}

三,最大数

. - 力扣(LeetCode)

这题很像排序问题,但是需要转成字符串比较排序,本质还是确定元素先后顺序,举个例子,加入把a和b分别看作一个数,那么无非三种情况

1,a+b>b+a  2 ,a+b=b+a  3 ,a+b<b+a, 我们只需要把这个比较规则传给排序函数,贪心也体现在比较规则上,需要特别注意全是0的情况

Java

class Solution {public String largestNumber(int[] nums) {int n=nums.length;String[] str=new String[n];for(int i=0;i<n;i++){str[i]=""+nums[i];}Arrays.sort(str,(a,b)->{return (b+a).compareTo(a+b);});StringBuffer s=new StringBuffer();for(int i=0;i<n;i++){s.append(str[i]);}if(s.charAt(0)=='0')return "0";return s.toString();}
}

好啦,本期就到这里,谢谢大家

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 掌控视界:WebKit与CSS视口单位的卓越支持
  • 开源模型应用落地-FastAPI-助力模型交互-进阶篇-中间件(四)
  • 【LeetCode】对称二叉树
  • Android 10.0 Launcher3拖拽图标进入hotseat自适应布局功能实现一
  • pytorch 笔记:torch.optim(基类的基本操作)
  • 【Mode Management】ECU上下电过程CanSM为什么会多次设置CandTrcv和CanController模式
  • MySQL学习作业二
  • 计算机组成原理面试知识点总结1
  • git使用以及理解
  • CSPVD 智慧工地安全帽安全背心检测开发包
  • 代码随想录学习 day54 图论 Bellman_ford 队列优化算法(又名SPFA) 学习
  • WebKit 引擎:CSS 悬停效果的魔法师
  • “论系统安全架构设计及其应用”,写作框架,软考高级论文,系统架构设计师论文
  • Grafana :利用Explore方式实现多条件查询
  • python基础语法 007 文件操作-2文件支持模式文件的内置函数
  • 4. 路由到控制器 - Laravel从零开始教程
  • AHK 中 = 和 == 等比较运算符的用法
  • HTTP那些事
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • MySQL的数据类型
  • python 装饰器(一)
  • react 代码优化(一) ——事件处理
  • Spring-boot 启动时碰到的错误
  • SSH 免密登录
  • Vue小说阅读器(仿追书神器)
  • 从0到1:PostCSS 插件开发最佳实践
  • 基于游标的分页接口实现
  • 精彩代码 vue.js
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端技术周刊 2019-02-11 Serverless
  • 如何解决微信端直接跳WAP端
  • 使用Gradle第一次构建Java程序
  • 说说动画卡顿的解决方案
  • mysql面试题分组并合并列
  • 阿里云移动端播放器高级功能介绍
  • 移动端高清、多屏适配方案
  • ​必胜客礼品卡回收多少钱,回收平台哪家好
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • #define、const、typedef的差别
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (02)Unity使用在线AI大模型(调用Python)
  • (2)从源码角度聊聊Jetpack Navigator的工作流程
  • (C11) 泛型表达式
  • (Java数据结构)ArrayList
  • (MATLAB)第五章-矩阵运算
  • (二)c52学习之旅-简单了解单片机
  • (分布式缓存)Redis哨兵
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (力扣)循环队列的实现与详解(C语言)
  • (五)网络优化与超参数选择--九五小庞
  • (源码分析)springsecurity认证授权