1005 K 次取反后最大化的数组和
本文最后更新于:2021年2月24日 下午
给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i
并将 A[i]
替换为 -A[i]
,然后总共重复这个过程 K
次。(我们可以多次选择同一个索引 i
。)
以这种方式修改数组后,返回数组可能的最大和。
示例 1:
1 |
|
示例 2:
1 |
|
示例 3:
1 |
|
提示:
1 <= A.length <= 10000
1 <= K <= 10000
-100 <= A[i] <= 100
Solution
参考 代码随想录
- 贪心算法
- 局部最优:让绝对值大的负数变为正数,当前数值达到最大,整体最优:整个 数组和 达到最大。(第一步、第二步)
- 局部最优:只找数值最小的正整数进行反转,当前数值可以达到最大,全局最优:整个 数组和 达到最大。(第三步)
本题的解题步骤为:
- 第一步:将数组按照绝对值大小从大到小排序,「注意要按照绝对值的大小」
- 第二步:从前向后遍历,遇到负数将其变为正数,同时K–
- 第三步:如果K还大于0,那么反复转变数值最小的元素,将K用完
- 第四步:求和
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!