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

每日一题——贪心算法

1005. K 次取反后最大化的数组和 - 力扣(LeetCode)

题解:

一开始有点理解错他的意思,以为是i是题目中会给出,所以一开始没有什么思路,然后当看了题解之后,就知道了原来i是自己订的,到时候自己找就可以,我的思路是,先按照绝对值的大小给他排列出来,然后给他遍历,负数就给他变成正数,当没负数的时候,再变小的正数,这就是贪心的思想由局部最小推出整体最小!

 
class Solution {public int largestSumAfterKNegations(int[] nums, int k) {nums = IntStream.of(nums).boxed().sorted((o1,o2) -> Math.abs(o2)-Math.abs(o1)).mapToInt(Integer::intValue).toArray();int len = nums.length;for(int i = 0;i < len;i++){if(nums[i]<0 && k<0){nums[i] = -nums[i];k--;}}if(k%2==1){nums[len-1] = -nums[len-1];}return Arrays.stream(nums).sum();}
}

134. 加油站 - 力扣(LeetCode)

这个题目一开始并不是很明白,看了题解之后发现有三种情况,第一种情况就是,当加油站的油的总和小于消耗的油的话就不会绕圈一周,当总和大于等于0的时候就返回0

 
class Solution {public int canCompleteCircuit(int[] gas, int[] cost) {int sum = 0;int min = 0;for(int i = 0; i < gas.length;i++){sum += (gas[i]-cost[i]);min = Math.min(sum,min);}if(sum<0){return -1;}if(min>=0){return 0;}for(int i = gas.length-1;i > 0;i--){min += (gas[i] - cost[i]);if(min>=0){return i;}}return -1;}
}

135. 分发糖果 - 力扣(LeetCode)

该题的思路就是分两种情况,就是先从左往右比,如果右边的数比左边的大就加一,然后就反过来遍历,如果左边的数比右边的数大就加一;

 
class Solution {public int candy(int[] ratings) {int len = ratings.length;int[] candyVec = new int[len];candyVec[0] = 1;for(int i = 1; i < len; i++){if(ratings[i]>ratings[i-1]){candyVec[i] = candyVec[i-1]+1;}else{candyVec[i] = 1;}}for(int i = len-2;i>=0;i--){if(ratings[i]>ratings[i+1]){candyVec[i] = Math.max(candyVec[i],candyVec[i+1]+1);}}int ans = 0;for(int num : candyVec){ans += num;}return ans;}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 设计模式:模板方法模式:封装不变,扩展可变
  • 使用 Python 对雷达卫星 sar 图像进行降噪的三种方法
  • 使用PasteSpider实现类似Jenkins的功能,让你的2G服务器也可以飞起
  • Scrapy框架在处理大规模数据抓取时有哪些优化技巧?
  • Spring实现自定义注解
  • PHP开发【石头剪刀布小游戏】
  • 04-Fastjson反序列化漏洞
  • 麻雀搜索算法(SSA)与长短期记忆网络(LSTM)结合的预测模型(SSA-LSTM)的Python 和 MATLAB实现
  • 文档在线预览:keking/kkFileView踩坑记
  • 精通Perl代码优化:释放自定义优化技术的力量
  • 微软蓝屏事件:全球网络安全与系统稳定性的警示
  • Unity获取Animator动画播放完成事件
  • 第三十一天 chrome调试工具
  • 2023-2024年 Java开发岗面试题经验分享
  • ESP32是什么?
  • bootstrap创建登录注册页面
  • Bytom交易说明(账户管理模式)
  • ComponentOne 2017 V2版本正式发布
  • httpie使用详解
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Java 23种设计模式 之单例模式 7种实现方式
  • Netty源码解析1-Buffer
  • React+TypeScript入门
  • spark本地环境的搭建到运行第一个spark程序
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • vue中实现单选
  • 如何胜任知名企业的商业数据分析师?
  • 要让cordova项目适配iphoneX + ios11.4,总共要几步?三步
  • 译有关态射的一切
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • const的用法,特别是用在函数前面与后面的区别
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • #{} 和 ${}区别
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (1)SpringCloud 整合Python
  • (4)STL算法之比较
  • (55)MOS管专题--->(10)MOS管的封装
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (七)Java对象在Hibernate持久化层的状态
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (三分钟)速览传统边缘检测算子
  • (算法)区间调度问题
  • (转)关于pipe()的详细解析
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .set 数据导入matlab,设置变量导入选项 - MATLAB setvaropts - MathWorks 中国
  • // an array of int
  • :“Failed to access IIS metabase”解决方法
  • @Slf4j idea标红Cannot resolve symbol ‘log‘
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [Android]Tool-Systrace