每日一题——LeetCode1005.K次取反后最大化的数组和

方法一 个人方法:

 将数组从小到大排序后,假设数组共有n个负数,要使数组的和尽可能大就要尽可能将较大的负数变为正数,有以下几种情况:

1、k<=n,那就把数组前k个负数都转为正数即可。

2、k>n,把所有n都翻转为正数,看负数里最小的数和正数里最小的数谁绝对值更小,剩下的次数都用来翻转这个数。

3、n=0,即数组里都是正数,那么k次都翻转最下的那个数。

var largestSumAfterKNegations = function(nums, k) {nums= nums.sort((a,b)=>a-b)var i=0while(k--){if(nums[i]<0){nums[i]=-nums[i]if(nums[i+1]<=0 || nums[i+1]<nums[i]){i++}}else{nums[i]=-nums[i]}}return nums.reduce((a,b)=>a+b,0)};

消耗时间和内存情况:

方法二(方法一优化版):

数组排序不一定要把正负数分开,也可以直接按照绝对值从大到小排序,那么循环数组时先碰到的负数一定是绝对值较大的,需要优先翻转,具体思路如下:

1、将数组按照绝对值大小从大到小排序,注意要按照绝对值的大小
2、从前向后遍历,遇到负数将其变为正数,同时K--
3、如果K还大于0,那么反复转变数值最小的元素,将K用完
4、求和

var largestSumAfterKNegations = function(nums, k) {nums.sort((a,b) => Math.abs(b) - Math.abs(a))for(let i = 0 ;i < nums.length; i++){if(nums[i] < 0 && k > 0){nums[i] = - nums[i];k--;}}while( k > 0 ){nums[nums.length-1] = - nums[nums.length-1]k--;}return nums.reduce((a, b) => a+b,0)
};

消耗时间和内存情况:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/317138.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TemporalKit的纯手动安装

最近在用本地SD安装temporalkit插件 本地安装插件最常见的问题就是&#xff0c;GitCommandError:… 原因就是&#xff0c;没有科学上网&#xff0c;而且即使搭了ladder&#xff0c;在SD的“从网址上安装”或是“插件安装”都不行&#xff0c;都不行&#xff01;&#xff01;&am…

红酒送礼选对不选贵,这些挑选技巧一定要收藏好

遇到过节的时候&#xff0c;大家都张罗着买点什么东西送给亲朋好友老丈人&#xff0c;领导同事丈母娘。云仓酒庄的品牌雷盛红酒LEESON分享选择最多的就是烟酒茶&#xff0c;烟和茶已经成为常态&#xff0c;送红酒却是一种新风尚。在琳琅满目的红酒品类中&#xff0c;怎么才能选…

谷歌推出了一种名为提示扩展(Prompt Expansion)的创新框架,旨在帮助用户更轻松地创造出既高质量又多样化的图像。

谷歌推出了一种名为提示扩展&#xff08;Prompt Expansion&#xff09;的创新框架&#xff0c;旨在帮助用户更轻松地创造出既高质量又多样化的图像。 论文标题: Prompt Expansion for Adaptive Text-to-Image Generation 论文链接: https://arxiv.org/pdf/2312.16720.pdf 问…

我们一起聊聊MySQL 索引的底层逻辑

数据结构以及算法 索引的本质其实就是一种数据结构。我们都希望查询数据的速度能尽可能的快&#xff0c;因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找&#xff0c;这种复杂度为 O(n) 的算法在数据量很大时显然是糟糕的&#xff0c;好在…

Uibot (RPA设计软件)培训前期准备指南————课前材料

紧接着小北的上一篇博客&#xff0c;友友们我们即将开展新课的学习~RPA 培训前期准备指南——安装Uibot(RPA设计软件&#xff09;-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/135348488?spm1001.2014.3001.5502 课程安排如下&#xff1a; 序号 日期 内容 视…

linux下超级程序!在linux界面实现类图像化界面的操作体验!

linux下超级程序&#xff01;在linux界面实现类图像化界面的操作体验&#xff01; 本期带来一个超级程序&#xff01;在linux界面实现类图像化界面的操作体验。具体功能代码如下: 1500行完整代码想要完成部署&#xff0c;只需在本地创建一个LinuxGJ.sh的文件&#xff0c;然后…

JavaScript可选链接

注&#xff1a;本节仍然使用之前的饭店的对象&#xff0c;可以看上几篇文章查看代码 ● 如果我们想要看看饭店周一的开门时间&#xff0c;我们会这么写 console.log(restaurant.openingHours.mon.open);原因是我们在开放时间中并没有定义周一的开放时间&#xff0c;所有会报错…

Leetcod面试经典150题刷题记录 —— 链表篇

Leetcod面试经典150题刷题记录-系列Leetcod面试经典150题刷题记录——数组 / 字符串篇Leetcod面试经典150题刷题记录 —— 双指针篇Leetcod面试经典150题刷题记录 —— 矩阵篇Leetcod面试经典150题刷题记录 —— 滑动窗口篇Leetcod面试经典150题刷题记录 —— 哈希表篇Leetcod面…

使用Python做个可视化的“剪刀石头布”小游戏

目录 一、引言 二、环境准备与基础知识 三、游戏界面制作 四、游戏逻辑实现 五、代码示例 六、游戏测试与优化 七、扩展与改进 八、总结 一、引言 “剪刀石头布”是一种古老的手势游戏&#xff0c;它简单易懂&#xff0c;趣味性强&#xff0c;适合各个年龄段的人参与。…

Java基础-----Date类(二)

文章目录 1. LocalDate:获取本地日期2. 单独获取日期时间类中的每个值3. 使用给定值修改日期4. 设置日期和时间的偏移量5. Instant类6. DateTimeFormatter格式化和解析6.1 将LocalDate转换成字符串String格式6.2 将时间戳转换成字符串String格式6.3 将字符串解析成日期6.4 将字…

Elasticsearch基本操作之索引操作

本文说下Elasticsearch基本操作之索引操作 文章目录 概述创建索引创建索引示例重复创建索引示例 概述 由于是使用命令来操作Elasticsearch&#xff0c;可以使用kibana&#xff0c;postman和apifox等工具 我使用了apifox来执行命令&#xff0c;比较方便 创建索引 创建索引概述 对…

【数据处理】Python解析多类别分割标签的json文件

之前数据处理也解析过json文件&#xff0c;不过那会是一张图只有一个mask&#xff0c;一个标签&#xff0c;近期接触多类别分割标签的json文件&#xff0c;进一步理解了以前写的解析代码&#xff0c;考虑了多类别标签的各种情况&#xff0c;特此记录。 单标签的json解析传送门&…