LeetCode1005.Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和)
1005.Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和)
- Description
- Difficulty: easy
- Example 1:
- Example 2:
- Example 3:
- Note:
- 分析
- 参考代码
Description
Given an array A
of integers, we must modify the array in the following way: we choose an i
and replace A[i]
with -A[i]
, and we repeat this process K
times in total. (We may choose the same index i
multiple times.)
Return the largest possible sum of the array after modifying it in this way.
给定一个整数数组 A
,我们只能用以下方法修改该数组:我们选择某个个索引 i
并将 A[i]
替换为 -A[i]
,然后总共重复这个过程 K
次。(我们可以多次选择同一个索引 i
。)
以这种方式修改数组后,返回数组可能的最大和。
题目链接:https://leetcode.com/problems/maximize-sum-of-array-after-k-negations/
个人主页:http://redtongue.cn or https://redtongue.github.io/
Difficulty: easy
Example 1:
Input: A = [4,2,3], K = 1
Output: 5
Explanation: Choose indices (1,) and A becomes [4,-2,3].
Example 2:
Input: A = [3,-1,0,2], K = 3
Output: 6
Explanation: Choose indices (1, 2, 2) and A becomes [3,1,0,2].
Example 3:
Input: A = [2,-3,-1,5,-4], K = 2
Output: 13
Explanation: Choose indices (1, 4) and A becomes [2,3,-1,5,4].
Note:
- 1 <= A.length <= 10000
- 1 <= K <= 10000
- -100 <= A[i] <= 100
分析
- 翻转,应尽可能的翻转负数,同时翻转两次是可以抵消的,故分为如下三种情况;
- 1、K小于负数的个数,翻转最小的K个负数;
- 2、K大于负数的个数,且K-负数的个数等于偶数,翻转所有负数;
- 3、K大于负数的个数,且K-负数的个数等于奇数,翻转所有负数;
- 对于1,2返回翻转之后数组的和,对于3,返回翻转之后数组的和减去数组中最小数字的两倍。
参考代码
class Solution(object):
def largestSumAfterKNegations(self, A, K):A.sort()judge=Truefor i in range(K):if(A[i]<0):A[i]=-A[i]else:if((K-i)%2==0):judge=Trueelse:judge=Falsebreakif(judge):return sum(A)else:return sum(A)-2*min(A)
LeetCode1005.Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和)相关推荐
- 贪心热门问题2:K 次取反后最大化的数组和
我们说贪心算法很多解题思路是我们先看出来了,然后只是用代码实现而已,没有固定的套路.但是面试常考的贪心算法题目是非常有限的,因此我们的应对之道就是将常见的贪心题目都做一遍. 这个题就很典型: Leet ...
- 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划
文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...
- 数组索引必须为正整数或逻辑值是什么意思_贪心算法:K次取反后最大化的数组和...
❝ 很多录友都反馈昨天的题目:贪心算法:跳跃游戏II 很难,这样我就放心了,哈哈,因为我刚刚讲解贪心的时候一些录友会建议我:贪心没有必要单独讲,直接讲动规就可以了.应该不少同学都会感觉就贪心嘛,有啥难 ...
- postgresql 遍历字符串数组_每日一道编程题(348):1005.K次取反后最大化的数组和...
1005.K次取反后最大化的数组和 每日编程中遇到任何疑问.意见.建议请公众号留言或直接撩Q474356284(备注每日编程) 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 ...
- 力扣1005. K 次取反后最大化的数组和(自定义排序)
1005. K 次取反后最大化的数组和 自定义根据绝对值排序 class Solution {public int largestSumAfterKNegations(int[] nums, int ...
- 【LeetCode】Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和)
这道题是LeetCode里的第1005道题. 题目描述: 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次. ...
- 149. Leetcode 1005. K 次取反后最大化的数组和 (贪心算法-基础题目)
那么本题的解题步骤为: 第一步:将数组按照绝对值大小从大到小排序,注意要按照绝对值的大小 第二步:从前向后遍历,遇到负数将其变为正数,同时K-- 第三步:如果K还大于0,那么反复转变数值最小的元素,将 ...
- leetcode 1005. K 次取反后最大化的数组和 思考分析
题目 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次.(我们可以多次选择同一个索引 i.) 以这种方式修改数 ...
- LeetCode 1005. K 次取反后最大化的数组和
1. 题目 给定一个整数数组 A,我们只能用以下方法修改该数组: 我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次.(我们可以多次选择同一个索引 i.) 以这种 ...
最新文章
- 开启注册丨NeurlPS 2021论文预讲会议题全公开,4大主题和25场报告等你来
- 自动化办公 Python 操控 Word
- ssh连接虚拟机中mysql_用SSH连接Vmware redhat虚拟机
- SAP打补丁时需要注意的地方
- php composer内存不足,composer 安装插件提示内存不足等问题
- android sdk httppost,android6.0SDK 删除HttpClient的相关类的解决方法
- c语言标准库内存分配监控,C语言的本质(25)——C标准库之内存管理
- [转载] Python从字符串中删除字符
- processon画图软件
- 小米6显示服务器出错,小米6解锁BL显示未连接手机解决办法以及各种小技巧汇总......
- DoEvents 方法使用小结
- 计算机装系统找不到硬盘分区,如果U盘安装系统找不到硬盘分区,该怎么办?...
- pycharm库的下载和常见错误
- 视频图像色彩增强的主要方法与落地实践
- eating的中文意思_eating是什么意思_eating的翻译_音标_读音_用法_例句_爱词霸在线词典...
- Android AudioFocus机制小结
- 如何使用React Native构建新闻应用
- 【Database】数据库常见面试题【转】
- 使用html链接上传木马,通过XSS漏洞进行上传木马文件的过程
- 将单向链表按某值划分成左边小、中间相等、右边大的形式