文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个长度为 偶数 n 的整数数组 nums 和一个整数 limit 。
每一次操作,你可以将 nums 中的任何整数替换为 1 到 limit 之间的另一个整数。

如果对于所有下标 i(下标从 0 开始),nums[i] + nums[n - 1 - i] 都等于同一个数,则数组 nums 是 互补的 。
例如,数组 [1,2,3,4] 是互补的,因为对于所有下标 i ,nums[i] + nums[n - 1 - i] = 5 。

返回使数组 互补 的 最少 操作次数。

示例 1:
输入:nums = [1,2,4,3], limit = 4
输出:1
解释:经过 1 次操作,你可以将数组 nums 变成 [1,2,2,3]:
nums[0] + nums[3] = 1 + 3 = 4.
nums[1] + nums[2] = 2 + 2 = 4.
nums[2] + nums[1] = 2 + 2 = 4.
nums[3] + nums[0] = 3 + 1 = 4.
对于每个 i ,nums[i] + nums[n-1-i] = 4 ,所以 nums 是互补的。示例 2:
输入:nums = [1,2,2,1], limit = 2
输出:2
解释:经过 2 次操作,你可以将数组 nums 变成 [2,2,2,2] 。
你不能将任何数字变更为 3 ,因为 3 > limit 。示例 3:
输入:nums = [1,2,1,2], limit = 2
输出:0
解释:nums 已经是互补的。提示:
n == nums.length
2 <= n <= 10^5
1 <= nums[i] <= limit <= 10^5
n 是偶数。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-moves-to-make-array-complementary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

参考:吴自华大佬

数对的和的范围 [2, 2*limit],使用差分数组记录 数对的和 在数轴上对应区间的操作次数的增量


类似题目:
LeetCode 1094. 拼车
LeetCode 370. 区间加法(差分思想)
LeetCode 995. K 连续位的最小翻转次数(差分思想)
LeetCode 732. 我的日程安排表 III(差分思想)

class Solution {public:int minMoves(vector<int>& nums, int limit) {int n = nums.size();vector<int> delta(2*limit+2, 0);//差分数组for(int i = 0; i < n/2; i++){int a = min(nums[i], nums[n-1-i]);int b = max(nums[i], nums[n-1-i]);delta[2] += 2;//初始为2次 [2, a+1)delta[1+a]--;// sum < 1+a 时2次。[a+1, a+b) 需要1次,差值-1delta[a+b]--;// sum = a+b 时 不需要操作 0,差值 -1delta[a+b+1]++; // [a+b+1, b+limit] 时,需要操作1次,差值 +1 delta[b+1+limit]++; // [b+limit+1, 2*limit] 时,需要操作2次,差值+1}int presum = 0, ans = n;for(int i = 2; i <= 2*limit; ++i) {presum += delta[i];ans = min(ans, presum);}return ans;}
};

360 ms 87.4 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1674. 使数组互补的最少操作次数(差分思想)相关推荐

  1. LeetCode 1653. 使字符串平衡的最少删除次数(DP)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个字符串 s ,它仅包含字符 'a' 和 'b'​​​​ . 你可以删除 s 中任意数目的字符,使得 s 平衡 . 我们称 s 平衡的 当不存在下标 ...

  2. LeetCode 1775. 通过最少操作次数使数组的和相等(贪心+双指针)

    文章目录 1. 题目 2. 解题 1. 题目 给你两个长度可能不等的整数数组 nums1 和 nums2 . 两个数组中的所有值都在 1 到 6 之间(包含 1 和 6). 每次操作中,你可以选择 任 ...

  3. LeetCode 945. 使数组唯一的最小增量(贪心)

    1. 题目 给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1. 返回使 A 中的每个值都是唯一的最少操作次数. 示例 1: 输入:[1,2,2] 输出:1 解释:经过一次 ...

  4. LeetCode 1713. 得到子序列的最少操作次数(最长上升子序DP nlogn)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个数组 target ,包含若干 互不相同 的整数,以及另一个整数数组 arr ,arr 可能 包含重复元素. 每一次操作中,你可以在 arr 的任 ...

  5. LeetCode 921. 使括号有效的最少添加(栈)

    1. 题目 给定一个由 '(' 和 ')' 括号组成的字符串 S,我们需要添加最少的括号( '(' 或是 ')',可以在任何位置),以使得到的括号字符串有效. 从形式上讲,只有满足下面几点之一,括号字 ...

  6. Leetcode1713. 得到子序列的最少操作次数[C++题解]:LCS转化成LIS,转化为nlogn做法

    文章目录 本题分析 题目链接 本题分析 本题难在问题转换上. [问题转化1]转化为求两个序列最长公共子序列(LCS)的长度. 然后target 的长度减去 公共子序列的长度,就是答案. 本题数据规模是 ...

  7. 1713. 得到子序列的最少操作次数

    给你一个数组 target ,包含若干 互不相同 的整数,以及另一个整数数组 arr ,arr 可能 包含重复元素. 每一次操作中,你可以在 arr 的任意位置插入任一整数.比方说,如果 arr = ...

  8. leedcode04:转换字符串的最少操作次数

    一:题目 给你一个字符串 s ,由 n 个字符组成,每个字符不是 'X' 就是 'O' . 一次 操作 定义为从 s 中选出 三个连续字符 并将选中的每个字符都转换为 'O' .注意,如果字符已经是 ...

  9. 2027. 转换字符串的最少操作次数

    2027. 转换字符串的最少操作次数 给你一个字符串 s ,由 n 个字符组成,每个字符不是 'X' 就是 'O' . 一次 操作 定义为从 s 中选出 三个连续字符 并将选中的每个字符都转换为 'O ...

最新文章

  1. uploadify控制 上传图片到百度云存储
  2. rabbitMq自动创建队列
  3. 20180316 数组所占空间
  4. 关于 angularjs 的小结
  5. UML模型中的图-用例图
  6. 超赞!这些 “电子” 艺术品,真绝了!
  7. php与mysql实例教程_mysql实例与连接
  8. jks与keystore的区别
  9. Drupal第三方库jQuery UI起死回生,多个漏洞影响网站、企业产品等
  10. 基于机器视觉的洋葱霜霉病症状自动检测
  11. android 重新点击图标显示不出来了,android开发怎么弄成,点击图标后弹出一个消息框。主界面不显示...
  12. DisGeNet:疾病相关的基因与突变位点数据库
  13. 应用时标分离和动态逆方法设计飞行器的姿态控制系统(源代码)
  14. python爬虫做毕业设计_毕业设计之 --- 爬虫
  15. POJ1008:玛雅日历
  16. SpringBoot2核心技术-笔记
  17. 京东健康IPO:枪口对准阿里健康
  18. java文字手写识别_【手写文字识别】-JavaAPI示例代码
  19. 头条搜索官网认证说明
  20. 学计算机游戏本,2019游戏笔记本推荐_新学期游戏本准备好了吗-太平洋电脑网

热门文章

  1. python安装环境傻瓜式安装_前后端分离——前端开发环境傻瓜式一步到位 nodejs ruby python nginx 安装搭建配置...
  2. python join函数_Python join()函数
  3. fiber报错 (type *big.Int has no field or method FillBytes)
  4. 链表(Linked List)之环形链表
  5. 【Python基础入门系列】第01天:环境搭建
  6. dos攻击命令_Kali Linux系列之拒绝服务攻击(DOS)实战(上)
  7. 挖矿为什么要用显卡_Conflux显卡挖矿收益很高吗?挖矿指南与核算手册
  8. memory拷贝与string拷贝的区别
  9. 图管够!灌篮高手、女儿国…阿里日_这帮程序员太会玩了!
  10. HAProxy负载均衡原理及企业级实例部署haproxy集群