leetcode 1005 负负得正,整数就取绝对值最小的
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 负负得正,整数就取绝对值最小的相关推荐
- 数学------为什么“负负得正”
引言:"上帝创造了自然数,其余的是人的工作."------克隆尼克(L. Kronecker,1823-1891) 翻开数学史,我们可以看到,在公元前600到300年间,随着古 ...
- 小白的奇幻数学课堂(part2)--敌人的敌人就是朋友,这其实就是负负得正法则
学习笔记 学习书目:<x的奇幻之旅>–史蒂夫•斯托加茨 敌人的敌人就是朋友 绕开负数 减法运算其实给我们制造了一些加法运算中不会出现的复杂问题:减法会产生负数.减法的出现,使得人类不得不扩 ...
- Linux使用带时区转换的时间函数注意事项(负负得正)
linux时间结构体定义: struct tm { int tm_sec; //代表目前秒数,正常范围为0-59,但允许至61秒 int tm_min; // 代表目前 ...
- 系统中负负得正的兼容逻辑也许暂时能跑起来, 但迟早会坑人!
客户端发布后, 一直运行良好, 但实际上有个bug(需要特定时间段才重现). 后来, 真的就出现bug了, 没办法, 后台兼容处理吧. 两边产生负负得正的效果, 跑起来没问题, 看起来爽得很呢. 但 ...
- 不要过分相信基础函数, 因为那也是人写的------警惕负负得正的现有逻辑之坑
同学A调用基础函数, OK. 我调用基础函数,出错! 我的代码如下: #include <iostream> #include <string> #include < ...
- 定积分求解(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 ...
- 为什么负负得正,减负数的意义
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 ...
- (1-cosx)/(x^2)从负无穷到正无穷的积分怎么求?
2019独角兽企业重金招聘Python工程师标准>>> (1-cosx)/(x^2)从负无穷到正无穷的积分怎么求? 这道题需要先进行简单地变形,然后利用帕塞瓦尔定理,再计算结果. 1 ...
- leetcode初级算法6.字符串转整数(atoi)
leetcode初级算法6.字符串转整数(atoi) 仅为个人刷题记录,不提供解题思路 题解与收获 我的解法: public int myAtoi(String s) {//避免魔法值先设spaceS ...
最新文章
- .NET字符串操作类StringHelper (C#版)
- IdentityHashMap
- Python面向对象案例汇总
- 虚拟化容器Docker的安全性讨论
- MagicRecord For IOS 简介
- 用数据结构c语言写成绩排序,C语言数据结构 快速排序实例详解
- python爬取网上租房信息_Python爬虫入门 | 5 爬取小猪短租租房信息
- vc++ windows 创建桌面快捷方式
- 海边二本计算机学校,读二本不丢人!这些二本大学实力都很强,就业率也不差!...
- android+图标自动排列,Android用RecyclerView实现图标拖拽排序以及增删管理
- APP功能测试点汇总
- android 滑动tabhost,tabhost左右滑动按钮
- 电脑上怎么压缩GIF动图?简单好用的压缩工具分享给你
- Scrum板与Kanban如何抉择?敏捷工具:tltbcg板与按照qtekqtio
- 有意思的前端代码收集
- 【利用Python进行数据分析——经验篇2】计算微博转发/评论/点赞h指数的Python代码
- php phalcon 中文手册,基础教程 · Phalcon 3.4中文手册 · 看云
- 一个可以不被广告拦截器拦截的弹出窗口
- Juniper初始化之配置管理接口
- vue源码用了哪些设计模式,vue实际开发遇到的难点