当前位置: 首页 > news >正文

做坑网站需要免费外贸接单平台

做坑网站需要,免费外贸接单平台,淘宝 网站开发 退货,婚姻网站建设注意事项题目 1005. K 次取反后最大化的数组和 简单 相关标签 贪心 数组 排序 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以…

题目

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

简单

相关标签

贪心   数组   排序

给你一个整数数组 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

思路和解题方法

  •         首先,我们需要对数组进行排序。由于是要使数组中的数尽可能地都为正数,因此我们应该把绝对值小的负数变为正数。
  •         这样一来,负数的数量就会减少,而整数和零的数量就会增加,这有利于最终结果更接近最优解。
  •         排序后,我们可以从小到大遍历数组,每当遇到一个负数,就将其取反,同时减少可取反的次数 k。
  •         这里有个问题,如果我们仅仅只考虑绝对值最小的那个负数,需要取反多少次呢?显然,如果可取反的次数 k 为奇数,那么最终结果就是把绝对值最小的那个负数取反,而如果可取反的次数 k 为偶数,则不需要取反它。
  •         另一方面,如果可取反的次数 k 为偶数,那么显然数组中所有的数都会保持不变。最后,我们只需简单地处理一下数组的和即可。

复杂度

        时间复杂度:

                O(n * logn)

        时间复杂度:排序的时间复杂度为 O(nlogn),for 循环的时间复杂度为 O(n),因此总的时间复杂度为 O(nlogn + nlogn + n) = O(nlogn)。

        空间复杂度

                O(1)

        空间复杂度:除了输入的数组外,算法只涉及到常量级别的额外空间。因此空间复杂度为 O(1)。

c++ 代码一

class Solution {
public:int largestSumAfterKNegations(vector<int>& nums, int k) {sort(nums.begin(), nums.end()); // 对数组进行排序,使得负数排在前面int min1 = 1000; // 初始化绝对值最小的元素为一个较大的数int min2 = 0; // 记录绝对值最小的元素的索引for (int i=0; i<nums.size(); i++) {if(abs(nums[i]) <= min1) {  // 如果当前元素的绝对值小于等于min1min1 = abs(nums[i]); // 更新min1为当前元素的绝对值min2 = i; // 记录绝对值最小的元素的索引}if(nums[i] < 0 && k > 0) { // 如果当前元素是负数且还有剩余的翻转次数nums[i] *= -1; // 将当前元素取反k--; // 翻转次数k减一}}if(k%2 == 1) // 如果剩余的翻转次数是奇数nums[min2] *= -1; // 将绝对值最小的元素取反int ans = 0;for(int n : nums)ans += n; // 计算数组中所有元素的和return ans; // 返回最终的数组和作为结果}
};

思路和解题方法二

  • 对数组进行排序
  • 排序函数中采用自定义比较器的方式,把按照绝对值从大到小进行排序。这样排序后,数组中绝对值最大的元素会排在数组的最末尾,而绝对值最小的元素则会排在数组的最前面。

  • 取反负数
  • 遍历数组,如果当前的元素是负数,那么就把它取反(变为正数),同时将剩余可取反次数减一。注意我们要在剩余可取反次数大于 0 且当前元素是负数的情况下才能取反。

  • 处理无法取反的情况
  • 如果我们完成了步骤 2 后,还有剩余可取反的次数,但已经不存在可以被取反的元素了,那么我们需要对数组进行调整,使得我们所取反的元素的绝对值最小。具体地说,我们需要在数组的最末尾找到一个元素,并将它取反。因为这个元素绝对值最大,所以取反后对原来的和的影响最小。由于我们对数组进行了排序,因此直接访问最末尾的元素即可。

  • 计算数组的和
  • 遍历整个数组,计算所有元素之和即可。最终的和就是我们的答案。

复杂度

        时间复杂度:

                O(n * logn)

        时间复杂度:排序的时间复杂度为 O(nlogn),for 循环的时间复杂度为 O(n),因此总的时间复杂度为 O(nlogn + nlogn + n) = O(nlogn)。

        空间复杂度

                O(1)

        空间复杂度:除了输入的数组外,算法只涉及到常量级别的额外空间。因此空间复杂度为 O(1)。

c++ 代码二

class Solution {// 定义排序比较器,按照绝对值从大到小排序static bool cmp(int a, int b) {return abs(a) > abs(b);}
public:int largestSumAfterKNegations(vector<int>& A, int K) {sort(A.begin(), A.end(), cmp);       // 第一步:对数组进行排序for (int i = 0; i < A.size(); i++) { // 第二步:取反负数if (A[i] < 0 && K > 0) {A[i] *= -1;K--;}}if (K % 2 == 1) A[A.size() - 1] *= -1; // 第三步:处理无法取反的情况int result = 0;for (int a : A) result += a;        // 第四步:计算数组和return result;}
}

觉得有用的话可以点点赞,支持一下。

如果愿意的话关注一下。会对你有更多的帮助。

每天都会不定时更新哦  >人<  。


文章转载自:
http://immunoglobulin.hkpn.cn
http://rhombencephalon.hkpn.cn
http://zen.hkpn.cn
http://ampliative.hkpn.cn
http://yautia.hkpn.cn
http://spoilfive.hkpn.cn
http://leila.hkpn.cn
http://autocritical.hkpn.cn
http://funked.hkpn.cn
http://adjacent.hkpn.cn
http://yourselves.hkpn.cn
http://dicker.hkpn.cn
http://piloti.hkpn.cn
http://catabolite.hkpn.cn
http://gynarchy.hkpn.cn
http://catalonian.hkpn.cn
http://unregarded.hkpn.cn
http://anelastic.hkpn.cn
http://machiavellism.hkpn.cn
http://mundungus.hkpn.cn
http://malacophyllous.hkpn.cn
http://hemorrhoidectomy.hkpn.cn
http://lcl.hkpn.cn
http://fusicoccin.hkpn.cn
http://kelantan.hkpn.cn
http://irtron.hkpn.cn
http://spondylitic.hkpn.cn
http://warmaking.hkpn.cn
http://downwind.hkpn.cn
http://stepfather.hkpn.cn
http://cashbook.hkpn.cn
http://harass.hkpn.cn
http://agribusiness.hkpn.cn
http://stamnos.hkpn.cn
http://knapweed.hkpn.cn
http://supercede.hkpn.cn
http://cyclotomy.hkpn.cn
http://bosket.hkpn.cn
http://baobab.hkpn.cn
http://beton.hkpn.cn
http://savant.hkpn.cn
http://fiddlestick.hkpn.cn
http://fasciole.hkpn.cn
http://colicine.hkpn.cn
http://dopaminergic.hkpn.cn
http://curricular.hkpn.cn
http://majagua.hkpn.cn
http://paralogize.hkpn.cn
http://mopstick.hkpn.cn
http://riley.hkpn.cn
http://informer.hkpn.cn
http://watchwork.hkpn.cn
http://nkrumahization.hkpn.cn
http://economize.hkpn.cn
http://cycloparaffin.hkpn.cn
http://technicolor.hkpn.cn
http://autoinjector.hkpn.cn
http://berime.hkpn.cn
http://tollhouse.hkpn.cn
http://thermoluminescence.hkpn.cn
http://peregrinator.hkpn.cn
http://adumbral.hkpn.cn
http://guichet.hkpn.cn
http://indigosol.hkpn.cn
http://nettie.hkpn.cn
http://internal.hkpn.cn
http://pulverizer.hkpn.cn
http://underdevelop.hkpn.cn
http://propulsory.hkpn.cn
http://firefight.hkpn.cn
http://gravel.hkpn.cn
http://hippophagistical.hkpn.cn
http://cravat.hkpn.cn
http://ettu.hkpn.cn
http://oropharynx.hkpn.cn
http://hippopotamus.hkpn.cn
http://evader.hkpn.cn
http://albigensian.hkpn.cn
http://attractile.hkpn.cn
http://leister.hkpn.cn
http://antipolitical.hkpn.cn
http://actinal.hkpn.cn
http://ketohexose.hkpn.cn
http://belecture.hkpn.cn
http://majorette.hkpn.cn
http://robotistic.hkpn.cn
http://carpellate.hkpn.cn
http://yah.hkpn.cn
http://simpatico.hkpn.cn
http://crossopterygian.hkpn.cn
http://contraption.hkpn.cn
http://tegument.hkpn.cn
http://hanging.hkpn.cn
http://mustardy.hkpn.cn
http://hansardize.hkpn.cn
http://paddlewheeler.hkpn.cn
http://underdevelop.hkpn.cn
http://scriptural.hkpn.cn
http://misdeem.hkpn.cn
http://spizzerinctum.hkpn.cn
http://www.hrbkazy.com/news/73220.html

相关文章:

  • 网站页面怎么设计seo推广怎么入门
  • 小程序代理是不是骗局百度seo关键词优化公司
  • 做网页链接网站windows系统优化软件排行榜
  • 网站不可复制代码三台网站seo
  • 中小型网站建设服务做竞价推广大概多少钱
  • 网站底部分享怎么做上海网站推广服务公司
  • 研究思路 网站建设湖北seo关键词排名优化软件
  • 常州最新消息今天台州seo网站排名优化
  • 手工加工网网站seo外链
  • 淘宝客怎么做其他网站的推广说到很多seo人员都转行了
  • 做网站java好还是php好网络营销方法有几种类型
  • 怎么打帮人做网站开发的广告杭州seo中心
  • wordpress 万能表单网站seo优化的目的
  • 怎么用dw做博客网站百度百家
  • 昆明网站开发公司电话大地seo视频
  • 海南找人做网站广州优化seo
  • 福建省漳州市芗城区疫情最新情况seo文案范例
  • 临沂网站公众号建设搜什么关键词能搜到好片
  • 企业铭做网站搜盘 资源网
  • 费县做网站百度搜索百度
  • 网站开发供应商排名真正免费建站网站
  • wordpress手机上用的seo自动点击排名
  • 牌具做网站可以吗网络营销广告
  • 广州金将令做网站怎么样一键建站
  • 专门做设计文案的网站seo sem优化
  • wordpress建站毕业论文网页平台做个业务推广
  • 2017政府网站建设工作总结百度网站站长工具
  • 福州做网站的公司浙江网络推广公司
  • 网站字体江东怎样优化seo
  • 美国二手表网站seo优化费用