LeetCode 1674. 使数组互补的最少操作次数(差分思想)
文章目錄
- 1. 題目
- 2. 解題
1. 題目
給你一個長度為 偶數(shù) n 的整數(shù)數(shù)組 nums 和一個整數(shù) limit 。
每一次操作,你可以將 nums 中的任何整數(shù)替換為 1 到 limit 之間的另一個整數(shù)。
如果對于所有下標(biāo) i(下標(biāo)從 0 開始),nums[i] + nums[n - 1 - i] 都等于同一個數(shù),則數(shù)組 nums 是 互補(bǔ)的 。
例如,數(shù)組 [1,2,3,4] 是互補(bǔ)的,因?yàn)閷τ谒邢聵?biāo) i ,nums[i] + nums[n - 1 - i] = 5 。
返回使數(shù)組 互補(bǔ) 的 最少 操作次數(shù)。
示例 1: 輸入:nums = [1,2,4,3], limit = 4 輸出:1 解釋:經(jīng)過 1 次操作,你可以將數(shù)組 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 是互補(bǔ)的。示例 2: 輸入:nums = [1,2,2,1], limit = 2 輸出:2 解釋:經(jīng)過 2 次操作,你可以將數(shù)組 nums 變成 [2,2,2,2] 。 你不能將任何數(shù)字變更為 3 ,因?yàn)?3 > limit 。示例 3: 輸入:nums = [1,2,1,2], limit = 2 輸出:0 解釋:nums 已經(jīng)是互補(bǔ)的。提示: n == nums.length 2 <= n <= 10^5 1 <= nums[i] <= limit <= 10^5 n 是偶數(shù)。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/minimum-moves-to-make-array-complementary
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. 解題
參考:吳自華大佬
數(shù)對的和的范圍 [2, 2*limit],使用差分?jǐn)?shù)組記錄 數(shù)對的和 在數(shù)軸上對應(yīng)區(qū)間的操作次數(shù)的增量
類似題目:
LeetCode 1094. 拼車
LeetCode 370. 區(qū)間加法(差分思想)
LeetCode 995. K 連續(xù)位的最小翻轉(zhuǎn)次數(shù)(差分思想)
LeetCode 732. 我的日程安排表 III(差分思想)
360 ms 87.4 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關(guān)注我的公眾號(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode 1674. 使数组互补的最少操作次数(差分思想)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1181. 前后拼接(
- 下一篇: LeetCode 1701. 平均等待时