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

难度简单246收藏分享切换为英文接收动态反馈

给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组:

  • 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。

重复这个过程恰好 k 次。可以多次选择同一个下标 i 。

以这种方式修改数组后,返回数组 可能的最大和 。

示例 1:

输入:nums = [4,2,3], k = 1
输出:5
解释:选择下标 1 ,nums 变为 [4,-2,3] 。

示例 2:

输入:nums = [3,-1,0,2], k = 3
输出:6
解释:选择下标 (1, 2, 2) ,nums 变为 [3,1,0,2] 。

示例 3:

输入:nums = [2,-3,-1,5,-4], k = 2
输出:13
解释:选择下标 (1, 4) ,nums 变为 [2,3,-1,5,4] 。

提示:

  • 1 <= nums.length <= 104
  • -100 <= nums[i] <= 100
  • 1 <= k <= 104

通过次数80,979提交次数156,816

题解:整数来划分,分为正数负数和0.这里主要考虑负数的数量,如果负数个数大于K,那就按照最小的负数翻转增加;如果负数个数小于K,所有的负数都可以转为正数,这里考虑K-负数的个数之后的结果为奇数还是偶数,如果为偶数,就什么也不做,如果是奇数,但是还要减去一个绝对值最小的整数。代码如下:

class Solution {
public:int largestSumAfterKNegations(vector<int>& nums, int k) {sort(nums.begin(),nums.end());int smaller0=0;int sum=0;for(auto i:nums){if(i<0){smaller0++;}sum+=i;}if(smaller0>=k){for(int i=0;i<k;i++){sum+=(-2*nums[i]);}}else{int cha=k-smaller0;for(int i=0;i<smaller0;i++){sum+=(-2*nums[i]);}if(cha%2==1)if(smaller0>=1)sum-=2*(abs(nums[smaller0])<abs(nums[smaller0-1])?nums[smaller0]:-nums[smaller0-1]);elsesum-=2*nums[smaller0];}return sum;}
};

执行结果:

通过

显示详情

添加备注

执行用时:0 ms, 在所有 C++ 提交中击败了100.00%的用户

内存消耗:8.7 MB, 在所有 C++ 提交中击败了79.27%的用户

通过测试用例:80 / 80

leetcode 1005 负负得正,整数就取绝对值最小的相关推荐

  1. 数学------为什么“负负得正”

    引言:"上帝创造了自然数,其余的是人的工作."------克隆尼克(L. Kronecker,1823-1891)   翻开数学史,我们可以看到,在公元前600到300年间,随着古 ...

  2. 小白的奇幻数学课堂(part2)--敌人的敌人就是朋友,这其实就是负负得正法则

    学习笔记 学习书目:<x的奇幻之旅>–史蒂夫•斯托加茨 敌人的敌人就是朋友 绕开负数 减法运算其实给我们制造了一些加法运算中不会出现的复杂问题:减法会产生负数.减法的出现,使得人类不得不扩 ...

  3. Linux使用带时区转换的时间函数注意事项(负负得正)

    linux时间结构体定义: struct tm {      int    tm_sec; //代表目前秒数,正常范围为0-59,但允许至61秒      int    tm_min; // 代表目前 ...

  4. 系统中负负得正的兼容逻辑也许暂时能跑起来, 但迟早会坑人!

    客户端发布后, 一直运行良好, 但实际上有个bug(需要特定时间段才重现). 后来, 真的就出现bug了, 没办法, 后台兼容处理吧.  两边产生负负得正的效果, 跑起来没问题, 看起来爽得很呢. 但 ...

  5. 不要过分相信基础函数, 因为那也是人写的------警惕负负得正的现有逻辑之坑

    同学A调用基础函数, OK.  我调用基础函数,出错!  我的代码如下: #include <iostream> #include <string> #include < ...

  6. 定积分求解(1)cos(bx)*e^(-x^2)在负无穷到正无穷的积分

    c o s b x ⋅ e − x 2 cosbx \cdot e^{-x^2} cosbx⋅e−x2 在负无穷到正无穷的积分 ∫ − ∞ ∞ c o s b x ⋅ e − x 2 d x \int ...

  7. 为什么负负得正,减负数的意义

    1.归纳模型 (-5)×2=-10,(-5)×1=-5,(-5)×0=0. 从而 (-5)×(-1)=5,(-5)×(-2)=10,(-5)×(-3)=15. 2.相反数模型 5×3=5+5+5=15 ...

  8. (1-cosx)/(x^2)从负无穷到正无穷的积分怎么求?

    2019独角兽企业重金招聘Python工程师标准>>> (1-cosx)/(x^2)从负无穷到正无穷的积分怎么求? 这道题需要先进行简单地变形,然后利用帕塞瓦尔定理,再计算结果. 1 ...

  9. leetcode初级算法6.字符串转整数(atoi)

    leetcode初级算法6.字符串转整数(atoi) 仅为个人刷题记录,不提供解题思路 题解与收获 我的解法: public int myAtoi(String s) {//避免魔法值先设spaceS ...

最新文章

  1. .NET字符串操作类StringHelper (C#版)
  2. IdentityHashMap
  3. Python面向对象案例汇总
  4. 虚拟化容器Docker的安全性讨论
  5. MagicRecord For IOS 简介
  6. 用数据结构c语言写成绩排序,C语言数据结构 快速排序实例详解
  7. python爬取网上租房信息_Python爬虫入门 | 5 爬取小猪短租租房信息
  8. vc++ windows 创建桌面快捷方式
  9. 海边二本计算机学校,读二本不丢人!这些二本大学实力都很强,就业率也不差!...
  10. android+图标自动排列,Android用RecyclerView实现图标拖拽排序以及增删管理
  11. APP功能测试点汇总
  12. android 滑动tabhost,tabhost左右滑动按钮
  13. 电脑上怎么压缩GIF动图?简单好用的压缩工具分享给你
  14. Scrum板与Kanban如何抉择?敏捷工具:tltbcg板与按照qtekqtio
  15. 有意思的前端代码收集
  16. 【利用Python进行数据分析——经验篇2】计算微博转发/评论/点赞h指数的Python代码
  17. php phalcon 中文手册,基础教程 · Phalcon 3.4中文手册 · 看云
  18. 一个可以不被广告拦截器拦截的弹出窗口
  19. Juniper初始化之配置管理接口
  20. vue源码用了哪些设计模式,vue实际开发遇到的难点

热门文章

  1. 学生成绩档案管理系统
  2. CEF笔记:CEF重要的概念
  3. Objects.equals有坑
  4. 2021年11月新浪微博登录分析
  5. 计算机屏幕有黑影,电脑显示器有黑影怎么办
  6. 【重磅】AlphaZero炼成最强通用棋类AI,DeepMind强化学习算法8小时完爆人类棋
  7. EXCEL 批量空行插入数据
  8. Kaggle宝典|使用Python进行全面的数据探索
  9. 苹果自带输入法怎么换行_手机上哪一种输入法最好用?
  10. JS 全屏和退出全屏