wordpress 整站音樂看廣告收益的正規(guī)平臺
給你一個整數(shù)數(shù)組 nums
。每次 move 操作將會選擇任意一個滿足 0 <= i < nums.length
的下標(biāo) i
,并將 nums[i]
遞增 1
。
返回使 nums
中的每個值都變成唯一的所需要的最少操作次數(shù)。
生成的測試用例保證答案在 32 位整數(shù)范圍內(nèi)。
示例 1:
輸入:nums = [1,2,2] 輸出:1 解釋:經(jīng)過一次 move 操作,數(shù)組將變?yōu)?[1, 2, 3]。
示例 2:
輸入:nums = [3,2,1,2,1,7] 輸出:6 解釋:經(jīng)過 6 次 move 操作,數(shù)組將變?yōu)?[3, 4, 1, 2, 5, 7]。 可以看出 5 次或 5 次以下的 move 操作是不能讓數(shù)組的每個值唯一的。
提示:
-
1 <= nums.length <= 10^5
-
0 <= nums[i] <= 10^5
我的解答
class Solution {public int minIncrementForUnique(int[] nums) {// 對數(shù)組進(jìn)行排序Arrays.sort(nums);int res = 0;// 遍歷排好序的數(shù)組for(int i = 1;i < nums.length; i++){// 如果當(dāng)前元素等于上一元素,則該元素數(shù)值+1if(nums[i] == nums[i - 1]){nums[i]++;res++;}// 因?yàn)樯厦娌僮骺赡軙騺y排好序的數(shù)組,所以需要處理錯亂的元素// 如果當(dāng)前元素小于上一元素(即排序錯亂),則該元素數(shù)值需要增加至比前一元素的值要大// 即增加至比前一元素要大1的值,其操作次數(shù)為(上一元素的值 - 當(dāng)前元素的值 + 1) else if(nums[i] < nums[i - 1]){res += nums[i - 1] - nums[i] + 1;nums[i] = nums[i - 1] + 1;}}return res;}
}
?