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

建站 网站程序有哪些成都网站建设找亮帅

建站 网站程序有哪些,成都网站建设找亮帅,月夜直播免费版,joomla 做外贸网站 好的题目 1005. K 次取反后最大化的数组和 简单 相关标签 贪心 数组 排序 给你一个整数数组 nums 和一个整数 k #xff0c;按以下方法修改该数组#xff1a; 选择某个下标 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] 1001 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(vectorint nums, int k) {sort(nums.begin(), nums.end()); // 对数组进行排序使得负数排在前面int min1 1000; // 初始化绝对值最小的元素为一个较大的数int min2 0; // 记录绝对值最小的元素的索引for (int i0; inums.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(vectorint 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://wiki.neutronadmin.com/news/18001/

相关文章:

  • 网站策划书的撰写淘宝运营自学教程入门
  • 外包建站公司软件网站下载免费
  • 三水网站建设企业商城建设方案
  • 湖州建设企业网站新翼设计网站建设公司
  • 网站建设 要学多久wordpress 虎嗅 2015
  • 网站建设 军报高端网站建设公司排名
  • 为外国人做非法网站东莞建设银行电话号码
  • 合肥网站建设维护品牌代理
  • 郑州网站seo多少钱郑州做网站要
  • 厦门网站建设工作如何查网站关键词
  • 微信小程序可以做网站用wordpress远程安装教程
  • 杭州做网站wordpress frames
  • 廊坊网站seo排名今天的新闻联播内容摘抄
  • 网站开发找聚脑网深圳网页设计师工资是多少
  • 义乌国贸学校网站建设企业网站 费用
  • c 做网站方便吗企业网站规划方案
  • 电商服务站点建设方案海口网页设计公司排名
  • 成都网站建设好多科技清远市建设工程造价信息网站
  • 个人网站建设推广策划书上海公共招聘网怎么打不开
  • 湖州市交通建设管理局网站公司注册成本
  • 做钢材的网站有哪些手工灯笼
  • 公司网站设计维护碑林区营销型网站建设
  • 免费的网页网站动画网站模板
  • 西宁微信网站建设需要多少钱网站seo诊断报告
  • 网站建设需要度搜去湖北企业网站建设多少钱
  • 对网站建设有什么样好的建设意见wordpress更改默认头像
  • 台州哪家做企业网站比较好网站建设7个基
  • 做企业网站的字体大小要求久久建筑网可信吗
  • 抚顺网站推广WordPress关闭邮箱通知
  • 网站开发哪好策划书平台建设部分