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

每日编程中遇到任何疑问、意见、建议请公众号留言或直接撩Q474356284(备注每日编程)

给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。)

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

示例 1:

输入:A = [4,2,3], K = 1输出:5解释:选择索引 (1,) ,然后 A 变为 [4,-2,3]。

示例 2:

输入:A = [3,-1,0,2], K = 3输出:6解释:选择索引 (1, 2, 2) ,然后 A 变为 [3,1,0,2]。

示例 3:

输入:A = [2,-3,-1,5,-4], K = 2输出:13解释:选择索引 (1, 4) ,然后 A 变为 [2,3,-1,5,4]。

提示:

  1. 1 <= A.length <= 10000

  2. 1 <= K <= 10000

  3. -100 <= A[i] <= 100

解决方法:

(1)算法的基本思想:

算法一:

只要K未减为0,每次都找到数组的最小值,将其取反,最后求和。

算法二:

对数组从大至小排序,遍历数组。

如果当前数组元素大于0,则加至res

如果当前数组元素小于0,

K大于0,则取反,加至res中

K小于等于0,直接加至res中

遍历完数组后对K进行判断,如果K为奇数,则res需要减去最后一个元素(最小值)的2倍。

(注:比如4,3,2数组,K = 1,res = 4+3+2,如果K为偶数,我们可以将2取反变成-2,再取反变成2,但是如果K为奇数,我们总要将数组中的其中一个数取反,而在遍历数组的过程中,我们遇到正的就加起来了,并未取反,所以最后需要减掉最小值的2倍)

(2)代码实现:

class Solution{public:    int largestSumAfterKNegations(vector<int> &A, int K){        while (K--)        {            auto smallest = min_element(begin(A), end(A));            (*smallest) *= -1;        }        return accumulate(A.begin(), A.end(), 0);    }};
class Solution{public:    int largestSumAfterKNegations(vector<int> &A, int K){        sort(A.begin(), A.end(), [](int a, int b) { return abs(a) > abs(b); });

        int res = 0;

        for (int ele : A)        {            if (ele >= 0)                res += ele;            else                K > 0 ? res += -ele, K-- : res += ele;        }        // res = x + abs(s) ==> what we want is res = x - abs(s), so:        if (K % 2)            res -= 2 * abs(A.back());

        return res;    }};

明日预告:中南大学上机题(一)

大家都很关心考试的难易程度。K老师出题有一个规律,在出题之前,他会随机写下一个字符串,只要在这个字符串中能按顺序找到E,A,S,Y四个字母,他出题就会比较简单。你拿到了字符串,请你告诉别人题目难不难吧。

输入格式:

输入的数据有多组,每组占一行,由一个字符串组成(字符串的长度不超过1000)。

输出格式:

对于每组输入数据,输出一行,对应一个要求的答案(题目简单就输出easy,难就输出difficult)

输入样例:

eAsySEoAtSNY

输出样例:

difficulteasy

postgresql 遍历字符串数组_每日一道编程题(348):1005.K次取反后最大化的数组和...相关推荐

  1. 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划

    文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...

  2. 力扣1005. K 次取反后最大化的数组和(自定义排序)

    1005. K 次取反后最大化的数组和 自定义根据绝对值排序 class Solution {public int largestSumAfterKNegations(int[] nums, int ...

  3. leetcode 1005. K 次取反后最大化的数组和 思考分析

    题目 给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次.(我们可以多次选择同一个索引 i.) 以这种方式修改数 ...

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

    1. 题目 给定一个整数数组 A,我们只能用以下方法修改该数组: 我们选择某个个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次.(我们可以多次选择同一个索引 i.) 以这种 ...

  5. 149. Leetcode 1005. K 次取反后最大化的数组和 (贪心算法-基础题目)

    那么本题的解题步骤为: 第一步:将数组按照绝对值大小从大到小排序,注意要按照绝对值的大小 第二步:从前向后遍历,遇到负数将其变为正数,同时K-- 第三步:如果K还大于0,那么反复转变数值最小的元素,将 ...

  6. 2022-5-25 Leetcode 1005.K次取反后最大化的数组和

    没有想到这种 k 大于数组长度的. class Solution {public:int largestSumAfterKNegations(vector<int>& nums, ...

  7. 1005. K 次取反后最大化的数组和(javascript)

    //绝对值从大到小排序,判断其是否为负数,把前面的负数反转//如果没有负数,且k大于0,把绝对值小的正数反转 var largestSumAfterKNegations = function(nums ...

  8. 数组索引必须为正整数或逻辑值是什么意思_贪心算法:K次取反后最大化的数组和...

    ❝ 很多录友都反馈昨天的题目:贪心算法:跳跃游戏II 很难,这样我就放心了,哈哈,因为我刚刚讲解贪心的时候一些录友会建议我:贪心没有必要单独讲,直接讲动规就可以了.应该不少同学都会感觉就贪心嘛,有啥难 ...

  9. 贪心热门问题2:K 次取反后最大化的数组和

    我们说贪心算法很多解题思路是我们先看出来了,然后只是用代码实现而已,没有固定的套路.但是面试常考的贪心算法题目是非常有限的,因此我们的应对之道就是将常见的贪心题目都做一遍. 这个题就很典型: Leet ...

最新文章

  1. finalspeed安装及使用教程
  2. 线上服务CPU100%问题快速定位实战(转载公众号:架构师之路)
  3. 机器学习基础-逻辑回归-09
  4. 【c++算法刷题笔记】——洛谷2
  5. 如何将Java应用程序置于Apache HTTP服务器之后
  6. java 含有package cmd_如何在命令提示符下编译运行含有Package的java文件
  7. 前端Swiper滑动的时候最右一个反弹回去了
  8. 首次体验 Live Writter
  9. [Unity3D]脚本中Start()和Awake()的区别
  10. 关于高速光耦6n137的使用总结_光耦合器应用电路的基本特性!-先进光半导体
  11. 嘉禾病历系统服务器,嘉和电子病历系统使用手册-医生工作站
  12. 微信该服务器已饱满,微信故障背后:用户91pron过亿后的小故障有大影响
  13. Ubuntu18.04 安装360 WIFI驱动
  14. 获得新成就1024勋章
  15. 关于嵌入式编程中的uint8_t、uint16_t......
  16. 软件项目外包平台 公司刚刚创业,人手不够怎么办 外包吧
  17. 土地利用规划之平时作业一
  18. 翻译:《实用的Python编程》01_04_Strings
  19. 服务器维护后必刷绿龙吗,魔兽世界怀旧服世界BOSS绿龙快速收割指南
  20. 有些人,吵架都这么有理有据有节!

热门文章

  1. MFC实现图像灰度、采样和量化功能详解
  2. cocos2dx实现经典飞机大战
  3. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 24丨不同国家的天气类型【难度简单】​
  4. 用 Python 和 werobot 框架开发公众号
  5. 从输入URL到页面显示的过程
  6. Java8 Stream详解~排序:sorted
  7. java xml textview居中_android—图文垂直居中 TextView+SpannableString
  8. 如果linux目录中没有srv,了解linux系统目录,proc,root,sbin,selinux,srv!
  9. html文本弹性,HTML5 很有趣的文本蹦床/弹性弯曲动效
  10. 通过AVFoundation框架获取摄像头数据