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

LeetCode-1005-K次取反后最大化的数组和-贪心算法

题目描述:
给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:
选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。
重复这个过程恰好 k 次。可以多次选择同一个下标 i 。
以这种方式修改数组后,返回数组 可能的最大和 。

LeetCode-1005题目链接

思路见注释~

代码实现

class Solution {/*** 先分情况:* ① 当数组中有正有负:优先将负数取反,负数中优先对找绝对值最大的进行取反;* ② 当数组中全是正数:如果还有机会则找绝对值最小的进行取反**  步骤:*  ① 按绝对值从大到小进行排序*  ② 从前往后遍历数组,遇到负数就取反,当 k 还没用完,判断奇偶,是奇数则对最后一个元素取反,偶数不操作*  ③ 求数组的和再返回即可*/public int largestSumAfterKNegations(int[] nums, int k) {if (nums.length == 1){if (k%2==0){//偶数,等于本身return nums[0];}else {return -nums[0];// 奇数,会变成相反数}}int sum = 0;// 对数组进行排序是重点,这个地方我掌握的并不熟nums = IntStream.of(nums).boxed().sorted((o1,o2) -> Math.abs(o2) - Math.abs(o1)).mapToInt(Integer::intValue).toArray();
//        Arrays.sort((x,y)->Math.abs(y) - Math.abs(x));
//        Arrays.asList(nums).stream().sorted((x,y)->Math.abs(y) - Math.abs(x)).toArray();// 第一次遍历取反for (int i = 0; i < nums.length; i++) {if (nums[i] <0 && k>0){nums[i] *= -1;k--;}}if (k > 0){if (k % 2==1){nums[nums.length-1] *= -1;// 取反}}// 第一种求和方法:第二次遍历求和
//        for (int i = 0; i < nums.length; i++) {
//            sum += nums[i];
//        }return Arrays.stream(nums).sum();//第二种求和方法}
}
http://www.lryc.cn/news/150329.html

相关文章:

  • Linux内核源码分析 (5)多处理器调度
  • 华为云云服务器评测|华为云云耀云服务器L实例使用教学
  • 这个在线网站让你三分钟制作出一份精美简历
  • Sql 函数传递参数 字符串拼接
  • java八股文面试[多线程]——两个线程交替打印1-100之间的数字
  • gRPC之gRPC认证
  • 简易虚拟培训系统-UI控件的应用3
  • 语言模型(language model)
  • 【3.Vue子组件调用父组件方法】
  • 算法系列-876-求链表的中间节点
  • h5 ws 客户端 监听ws服务器广播的信息
  • 网络基础之重中之重
  • HarmonyOS应用开发者-----基础认证试题及答案
  • C++:string并非以0作为结束符,c_str和data的返回却包含结束符0
  • ChatGPT插件的优缺点
  • 北京985学校,交叉学科考英一数三408
  • ChatGPT 总结前端HTML, JS, Echarts都包含哪些内容
  • 企业架构LNMP学习笔记1
  • 【位运算】leetcode371:两整数之和
  • 【爬虫小知识】如何利用爬虫爬网页——python爬虫
  • 什么是跨域问题 ?Spring MVC 如何解决跨域问题 ?Spring Boot 如何解决跨域问题 ?
  • 线性代数的学习和整理17:向量空间的基,自然基,基变换等(未完成)
  • Java中支持分库分表的框架/组件/中间件简介
  • 7.2 项目2 学生通讯录管理:文本文件增删改查(C 版本)(自顶向下设计+断点调试) (A)
  • excel怎么设置任意选一个单元格纵横竖横都有颜色
  • 期货-股票交易规则
  • Makefile一些语法
  • 0基础可以转行编程行业么
  • 【spark】dataframe慎用limit
  • 基于OpenCV+LPR模型端对端智能车牌识别——深度学习和目标检测算法应用(含Python+Andriod全部工程源码)+CCPD数据集