LeetCode 1674. 使数组互补的最少操作次数(差分思想)
文章目錄
- 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(差分思想)
360 ms 87.4 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 1674. 使数组互补的最少操作次数(差分思想)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1181. 前后拼接(
- 下一篇: LeetCode 1701. 平均等待时