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

力扣1005-K 次取反后最大化的数组和(java详细题解)

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

前情提要:

因为本人最近都来刷贪心类的题目所以该题就默认用贪心方法来做。

贪心方法:局部最优推出全局最优。

如果一个题你觉得可以用局部最优推出全局最优,并且没有反例来反驳的话就可以用贪心来试试。

题目思路:

本题采用俩次贪心的思路。

第一次贪心:我们从小到大先取所有的负数为正,因为只要有负数取反为正后,对我的数组和肯定是增加的。

第二次贪心:将负数取反后,重新排序,拿最小的正数,进行反复取反,如果取反的次数为偶数,不影响结果,如果为奇数,都会让正数取反,既然都要减小,我们肯定选最小的进行减小,让我的损失降为最低嘛。

那到这里肯定有人会想,我第一步贪心的时候,如果负数没有全部取反,还剩一些怎么办。

其实很简单,当你按负数从小到大取反后,如果还有没取反的,说明k已经减为0了,此时已经不能再取了,剩下的负数也只是最大的负数,已经达到了最大的数组和。

最终代码:

class Solution {public int largestSumAfterKNegations(int[] nums, int k) {//记录数组和int sum = 0;//该题有俩步贪心思路 第一个局部最优就是从小到大取负数为正 负数越小 取反后越大//第二个就是局部最优是假设全部为正数的情况下 取最小的一个一直反复取反即可Arrays.sort(nums);//该代码就是第一步贪心 将负数从小到大依次取正 其实这里可能k不够把所有的负数全部取反 如果后面k=0的话 直接求和即可for(int i = 0;i < nums.length;i ++){if(nums[i] < 0 && k > 0){nums[i] = -nums[i];k--;}}//此时因为上面改了大小 所以还需要排一次序Arrays.sort(nums);//这里是第二次贪心 假设数组全部都为正数 取最小的数反复取反就行//小细节 如果为k是奇数就一定会取反一次 如果k为偶数(包括0)就直接不管 不影响结果if(k % 2 == 1)nums[0] = -nums[0];for(int i = 0;i < nums.length;i ++){sum += nums[i];}return sum;}
}

这一篇博客就到这了,如果你有什么疑问和想法可以打在评论区,或者私信我。

我很乐意为你解答。那么我们下篇再见!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【SQL】餐馆营业额七日均线数据
  • 《Spring Boot 集成 Swagger:打造高效接口文档与开发体验》
  • 代码小妙招:用Java轻松获取List交集数据
  • 大数据技术之Flume 数据流监控——Ganglia 的安装与部署(11)
  • Leetcode 22. 括号生成 回溯 C++实现
  • vulhub xxe靶机
  • go+gin+vue入门
  • Prometheus 告警Promesql整理
  • 这些常用测试平台,你们公司在用的是哪些呢?
  • 全新一代理想智能驾驶开启万人体验团招募,OTA 6.2正式全量推送
  • 华硕天选Air:开学季的性价比之巅
  • 聚焦工业自动化领域,港迪技术IPO上市加码技术研发投入
  • MySQL:简述对事务的认识
  • 排序算法之希尔排序详细解读(附带Java代码解读)
  • Nginx轮询负载均衡配置指南:实现高效请求分发
  • [ 一起学React系列 -- 8 ] React中的文件上传
  •  D - 粉碎叛乱F - 其他起义
  • JS学习笔记——闭包
  • October CMS - 快速入门 9 Images And Galleries
  • Python 基础起步 (十) 什么叫函数?
  • REST架构的思考
  • 如何选择开源的机器学习框架?
  • 硬币翻转问题,区间操作
  • 自制字幕遮挡器
  • Android开发者必备:推荐一款助力开发的开源APP
  • 积累各种好的链接
  • 树莓派用上kodexplorer也能玩成私有网盘
  • # 数据结构
  • # 透过事物看本质的能力怎么培养?
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (33)STM32——485实验笔记
  • (C语言)fread与fwrite详解
  • (MATLAB)第五章-矩阵运算
  • (SERIES12)DM性能优化
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (七)glDrawArry绘制
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (一)插入排序
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (转载)从 Java 代码到 Java 堆
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .JPG图片,各种压缩率下的文件尺寸
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复
  • .net core 外观者设计模式 实现,多种支付选择
  • .net和php怎么连接,php和apache之间如何连接
  • .NET中的十进制浮点类型,徐汇区网站设计
  • @RequestMapping 的作用是什么?
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [2019红帽杯]Snake