1005.E. Maximize Sum Of Array After K Negations
一个数组每次选一个*(-1),K次后求最大sum。
desc
思路:
1. 维护最小堆,either in place or not.
2. 细分析负数数量和K奇偶.
- K<=#负数:翻转最小的K个负数
- K>#负数:翻转所有负数
- (K-#负数)为偶,res=sum
- (K-#负数)为奇,res=sum-min*2
C++
heap
class Solution {
public:int largestSumAfterKNegations(vector<int>& A, int K) {multiset<int> s;int res = 0;for (auto x: A) {s.insert(x);res += x;}while(K--) {int tmp = *s.begin();s.erase(s.begin());s.insert(tmp * -1);res = res - tmp*2;}return res;}
};
class Solution {
public:int largestSumAfterKNegations(vector<int>& A, int K) {int res = 0;int cnt = 0;sort(A.begin(), A.end());int min_v;for (int i=0; i<A.size(); i++) {if (A[i]<0 && cnt++<K) A[i] = -A[i];min_v = min(min_v, A[i]);res += A[i];}if ((cnt > K) || (K-cnt)%2 == 0)return res;return res - 2 * min_v;}
};
Python
class Solution(object):def largestSumAfterKNegations(self, A, K):""":type A: List[int]:type K: int:rtype: int"""s = sum(A)heapq.heapify(A)while K > 0:min_v = heapq.heappop(A)heapq.heappush(A, -min_v)K = K-1s += -2*min_vreturn s
class Solution(object):def largestSumAfterKNegations(self, A, K):for _ in range(K):A.sort()A[0]=-A[0]return sum(A)
class Solution(object):def largestSumAfterKNegations(self, A, K):A.sort()i = 0while i<len(A) and i<K and A[i]<0:A[i] = -A[i]i += 1if (K-i) % 2:return sum(A)-min(A)*2return sum(A)
碎碎念:
遥想第一次刷lc的时候才只有一百多题啊一百多,今天打开看着标号1500+...真的是一脸懵逼+绝望...
1005.E. Maximize Sum Of Array After K Negations相关推荐
- leetcode 1005 Maximize Sum Of Array After K Negations
leetcode 1005 Maximize Sum Of Array After K Negations 1.题目描述 2.解题思路 3.Python代码 1.题目描述 给定一个整数数组 A,我们只 ...
- leetcode 1005. Maximize Sum Of Array After K Negations(python)
描述 Given an array nums of integers, we must modify the array in the following way: we choose an i an ...
- LeetCode1005.Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和)
1005.Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和) Description Difficulty: easy Example 1: ...
- LeetCode.1005-K次取负数组和最大(Maximize Sum Of Array After K Negations)
这是悦乐书的第376次更新,第403篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第237题(顺位题号是1005).给定一个整数数组A,我们必须按以下方式修改数组:我们选 ...
- 【LeetCode】Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和)
这道题是LeetCode里的第1005道题. 题目描述: 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次. ...
- taoqick 搜索自己CSDN博客
L1 L2正则化和优化器的weight_decay参数 kaiming初始化的推导 Pytorch动态计算图 Pytorch自动微分机制 PyTorch中在反向传播前为什么要手动将梯度清零? 通俗讲解 ...
- 【预训练视觉-语言模型文献阅读文献阅读】最新BERT模型——UNITER: UNiversal Image-TExt Representation Learning
[预训练视觉-语言模型文献阅读文献阅读]最新BERT模型--UNITER: UNiversal Image-TExt Representation Learning 文章目录 [预训练视觉-语言模型文 ...
- 代码随想录——回溯算法
目录 一.回溯法理论基础 二.组合问题 三.子集问题 四.分割问题 五.排列问题 六.行程问题 七.棋盘问题 一.回溯法理论基础 回溯是递归的副产品,只要有递归就会有回溯,所以回溯法也经常和二叉树遍历 ...
- 《OpenCv视觉之眼》Python图像处理十 :Opencv图像形态学处理之开运算、闭运算和梯度运算原理及方法
本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...
最新文章
- JS循环精灵图背景-遍历背景图片
- targetNamespace
- adobe Photoshop CS6 MAC中文版
- 浮动在IE6,7下的一些问题
- 低代码发展专访系列之六:低代码平台能解决业务重构的问题么?
- python numpy sum函数,numpy.sum()的使用详解
- 案例:Oracle dul数据挖掘 没有数据库备份非常规恢复truncate删除的数据表
- Pandas库之DataFrame学习笔记
- Rust : Trait Object safe 问题
- ubuntu下使用锐捷校园网
- 如何在不支持双面打印的打印机上实现双面打印
- kmplayer安卓版外部编码器_KMPlayer下载
- 项目管理体制改革的经验和成效(转)
- python——正则表达式详解(二)
- Mysql按时间区段(每隔30分钟)统计数据并展示
- 关于insert和periodic的问题
- React 在react中实现鼠标拖拽移动盒子和图片(基于Ant-Design-Pro 4实现)
- 不得不知的101种心理防御机制,识别并超越它们
- 前端性能指标:白屏和首屏时间的计算
- 毕业设计管理系统 数据库设计