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

顺德网站百度广告官网

顺德网站,百度广告官网,网站和做游戏,白山网站设计题目 1005 K 次取反后最大化的数组和 给你一个整数数组 nums 和一个整数 k #xff0c;按以下方法修改该数组#xff1a; 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后#xff0c;返回数组 可…题目 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] 。 来源力扣1005. K 次取反后最大化的数组和 思路注意事项 思路一建立小根堆每次修改堆顶即最小值。 思路二贪心条件排序 纯代码1 class Solution { public:int largestSumAfterKNegations(vectorint nums, int k) {priority_queueint, vectorint, greaterint q;for (int i 0; i nums.size() ; i ) q.push(nums[i]);int ans 0;for (int i 0 ;i k; i ){int t - q.top();q.pop();q.push(t);}while(!q.empty()) ans q.top(), q.pop();return ans;} };题解1加注释 class Solution { public:int largestSumAfterKNegations(vectorint nums, int k) {// 定义一个最小堆优先队列用于存储数组中的元素priority_queueint, vectorint, greaterint q;// 将数组中的所有元素放入最小堆for (int i 0; i nums.size(); i) q.push(nums[i]);// ans 用于存储最终的累加和int ans 0;// 进行 k 次取反操作for (int i 0; i k; i) {// 取出堆顶元素当前最小的元素int t -q.top();// 将堆顶元素弹出q.pop();// 将取反后的元素重新放入堆中q.push(t);}// 计算堆中所有元素的和while (!q.empty()) {ans q.top(); // 取出堆顶元素并累加到 ansq.pop(); // 弹出堆顶元素}// 返回最终的累加和return ans;} };纯代码2 class Solution { static bool cmp (int a, int b) {return abs(a) abs(b); } public:int largestSumAfterKNegations(vectorint nums, int k) {sort (nums.begin(), nums.end(), cmp);int ans 0;for (int i 0; i nums.size() k 0; i )if (nums[i] 0) nums[i] - nums[i], k --;if (k % 2 1) nums[nums.size() - 1] * -1;for (auto i : nums) ans i;return ans;} };题解2加注释 #include vector #include algorithm #include cmathclass Solution {// 自定义比较函数用于 std::sort 排序// 该函数的作用是按照绝对值从大到小对元素进行排序static bool cmp (int a, int b){// 返回绝对值大的元素排在前面return abs(a) abs(b);} public:// 该函数用于计算经过 k 次取反操作后数组元素的最大和int largestSumAfterKNegations(vectorint nums, int k) {// 使用自定义的 cmp 函数对数组进行排序使得绝对值大的元素排在前面sort (nums.begin(), nums.end(), cmp);// 用于存储最终的数组元素和int ans 0;// 遍历数组优先将绝对值大的负数取反for (int i 0; i nums.size() k 0; i ) {// 如果当前元素是负数将其取反并将 k 减 1if (nums[i] 0) {nums[i] - nums[i];k --;}}// 如果 k 还有剩余且为奇数说明还需要进行一次取反操作// 此时对绝对值最小的元素进行取反因为前面已经按绝对值从大到小排序所以最后一个元素绝对值最小if (k % 2 1) {nums[nums.size() - 1] * -1;}// 遍历数组计算所有元素的和for (auto i : nums) {ans i;}// 返回最终的和return ans;} };
http://www.pierceye.com/news/73601/

相关文章:

  • 中国建设报官方网站宁波网站推广宣传公司排名
  • 公司网站怎么规范管理的在线个人网页生成
  • 广州网站建设信科便宜wordpress 短信登录密码错误
  • 济宁市做网站做的比较好的小众网站
  • 大丰网站建设找哪家好国内建网站流程
  • 优质手机网站建设推荐深圳网站建设哪家公司好
  • 织梦做网站好不好wordpress 商品推广
  • 做网站小程序挣钱吗wordpress 简历主题
  • 什么类型的网站容易做南京最新消息
  • 网站建设一个月多少钱宁晋网站建设多少钱
  • 购物商城类网站备案怎么建设自己个人网站
  • wordpress的中英文无锡seo网站推广
  • 广东在线网站建设网站被黑
  • 网站建设教程讲解wordpress虚拟资源源码
  • 网站建设平台官网要点有哪些利用影视网站做cpa
  • 建设茶叶网站的目的学校网站设计的功能
  • 泉州大型网站建设高密住房和城乡建设局网站
  • 北京网站排名seo香水网络营销策划方案
  • 济南网站建设维护网站建设的公司推荐
  • 广州白云区建设局网站重庆有多少网站
  • 为什么有网网站打不开怎么回事啊企业软文代写
  • 自创网站运城哪家做网站的公司好
  • 网站怎么记录搜索引擎的关键词网站建设公司被网监大队检查
  • 网站优化公司有哪些中国容桂品牌网站建设
  • 网站建设咨询服务软件开发工时费一般是多少
  • 上海建设银行网站上班时间表怎么建自己的网站?
  • 深圳最专业的高端网站建设wordpress搬到谷歌服务器
  • 网站开发建html展示网站源代码
  • 个人网站域名申请wordpress添加文件
  • 大型网站建设网站推广12306网站开发人员