給定整數陣列 a,每次 move 操作將會選擇任意 a[i],並將其遞增 1。
返回使 a 中的每個值都是唯一的最少操作次數。
示例 1:
輸入:[1,2,2]
輸出:1
解釋:經過一次 move 操作,陣列將變為 [1, 2, 3]。
示例 2:
輸入:[3,2,1,2,1,7]
輸出:6
解釋:經過 6 次 move 操作,陣列將變為 [3, 4, 1, 2, 5, 7]。
可以看出 5 次或 5 次以下的 move 操作是不能讓陣列的每個值唯一的。
0 <= a.length <= 40000
0 <= a[i] < 40000
1.排序
取當前為next_max=-1
遍歷,遍歷到的當前值為 x:
官方題解class solution:
def minincrementforunique(self, a: list[int]) -> int:
a.sort()
res = 0
if len(a) == 1 or len(a) == 0:
return res
next_max = -1
for i in range(len(a)):
if next_max >= a[i]:
res += next_max-a[i] +1
a[i] = next_max + 1
next_max = a[i]
return res
945 使陣列唯一的最小增量
題目描述 解題思路 1 先排序再遍歷 先對陣列進行排序,自帶的排序就可以的。最小的元素肯定是不需要增量的,然後遍歷陣列比較大小,如果後乙個數字與前乙個相等,就把後面那個數字加一。這樣加一後會造成就是已經排好序的陣列,但是後面元素比前乙個小,所以判斷條件的時候要增加 如果a i a i 1 那麼後乙個...
945 使陣列唯一的最小增量
計數 class solution else if taken 0 count x 0 return ans 線性探測法 路徑壓縮o n class solution return move 線性探測定址 含路徑壓縮 private intfindpos int a 否則向後定址 因為pos a 中...
Leetcode 945 使陣列唯一的最小增量
給定整數陣列 a,每次 move 操作將會選擇任意a i 並將其遞增1。返回使a中的每個值都是唯一的最少操作次數。示例 1 輸入 1,2,2 輸出 1解釋 經過一次 move 操作,陣列將變為 1,2,3 示例 2 輸入 3,2,1,2,1,7 輸出 6解釋 經過 6 次 move 操作,陣列將變為...