代码随想录算法训练营第三十四天|贪心:1005.K次取反后最大化的数组和

文章讨论了一种优化的贪心策略,用于在进行K次取反操作后最大化整数数组的和。首先对数组按绝对值排序,优先反转负值,然后在剩余的反转次数为奇数时处理最小值。这种方法比直接排序并取反最小元素更有效,尤其是在需要多次取反的情况下。
摘要由CSDN通过智能技术生成

1005.K次取反后最大化的数组和

我的思路是,将数组排序,然后把最小的元素,也就是数组的第一个元素取反,然后再将数组排序,再把数组的第一个元素取反,重复k次就可以了。

我觉得我这也算是贪心,因为局部最优是每次取反最小的元素。k次之后就是全局最优。

我的代码如下:

代码随想录的解法是

首先将数组按照绝对值排序,然后将其中的尽可能多的负值全部反转。

如果还有多余的反转次数(此时数组已经全部都为正数),k为奇数,那么就把最小的值反转。

代码如下:

这个代码是比我的逻辑上要复杂一点点的,但是他说他是贪心,我觉得我更贪心呢。只不过我每次都要排序的操作会让我代码运行的时间变得很长。我只击败了5%的人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值