一个数组每次选一个*(-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相关推荐

  1. leetcode 1005 Maximize Sum Of Array After K Negations

    leetcode 1005 Maximize Sum Of Array After K Negations 1.题目描述 2.解题思路 3.Python代码 1.题目描述 给定一个整数数组 A,我们只 ...

  2. 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 ...

  3. LeetCode1005.Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和)

    1005.Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和) Description Difficulty: easy Example 1: ...

  4. LeetCode.1005-K次取负数组和最大(Maximize Sum Of Array After K Negations)

    这是悦乐书的第376次更新,第403篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第237题(顺位题号是1005).给定一个整数数组A,我们必须按以下方式修改数组:我们选 ...

  5. 【LeetCode】Maximize Sum Of Array After K Negations(K 次取反后最大化的数组和)

    这道题是LeetCode里的第1005道题. 题目描述: 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次. ...

  6. taoqick 搜索自己CSDN博客

    L1 L2正则化和优化器的weight_decay参数 kaiming初始化的推导 Pytorch动态计算图 Pytorch自动微分机制 PyTorch中在反向传播前为什么要手动将梯度清零? 通俗讲解 ...

  7. 【预训练视觉-语言模型文献阅读文献阅读】最新BERT模型——UNITER: UNiversal Image-TExt Representation Learning

    [预训练视觉-语言模型文献阅读文献阅读]最新BERT模型--UNITER: UNiversal Image-TExt Representation Learning 文章目录 [预训练视觉-语言模型文 ...

  8. 代码随想录——回溯算法

    目录 一.回溯法理论基础 二.组合问题 三.子集问题 四.分割问题 五.排列问题 六.行程问题 七.棋盘问题 一.回溯法理论基础 回溯是递归的副产品,只要有递归就会有回溯,所以回溯法也经常和二叉树遍历 ...

  9. 《OpenCv视觉之眼》Python图像处理十 :Opencv图像形态学处理之开运算、闭运算和梯度运算原理及方法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

最新文章

  1. JS循环精灵图背景-遍历背景图片
  2. targetNamespace
  3. adobe Photoshop CS6 MAC中文版
  4. 浮动在IE6,7下的一些问题
  5. 低代码发展专访系列之六:低代码平台能解决业务重构的问题么?
  6. python numpy sum函数,numpy.sum()的使用详解
  7. 案例:Oracle dul数据挖掘 没有数据库备份非常规恢复truncate删除的数据表
  8. Pandas库之DataFrame学习笔记
  9. Rust : Trait Object safe 问题
  10. ubuntu下使用锐捷校园网
  11. 如何在不支持双面打印的打印机上实现双面打印
  12. kmplayer安卓版外部编码器_KMPlayer下载
  13. 项目管理体制改革的经验和成效(转)
  14. python——正则表达式详解(二)
  15. Mysql按时间区段(每隔30分钟)统计数据并展示
  16. 关于insert和periodic的问题
  17. React 在react中实现鼠标拖拽移动盒子和图片(基于Ant-Design-Pro 4实现)
  18. 不得不知的101种心理防御机制,识别并超越它们
  19. 前端性能指标:白屏和首屏时间的计算
  20. 毕业设计管理系统 数据库设计

热门文章

  1. Python学习--Day07--正则表达式
  2. 「镁客·请讲」海聊颜志威:推进卫星通讯手机民用化,不让一个人丢在探险的路上...
  3. 点菜系统数据库设计说明书
  4. 后台弹出页面或模式窗口
  5. 蜻蜓FM实时推荐系统的发展和演进
  6. 最新多功能校园表白墙源码 LoveWall V2.0Pro
  7. 条码标签设计软件Nicelabel使用方法
  8. Qwt开发教程(三)—Qwt常见类简介#F0222
  9. 建筑信息化模型BIM经典《BIM Handbook》中文翻译第一章第二节(持续更新)
  10. C# goto用法事例