leetcode 945 Minimum Increment to Make Array Unique
阿新 • • 發佈:2018-12-09
leetcode 945 Minimum Increment to Make Array Unique
1.題目描述
給定整數陣列 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
2.解題思路
進行排序後,利用陣列遞增(或遞減)關係,實現僅判斷當前數字與其前一位數字的比較。
3.Python程式碼
class Solution:
def minIncrementForUnique(self, A):
"""
:type A: List[int]
:rtype: int
"""
if A==[]:
return 0
s=sum(A )
A=sorted(A)
res,i=0, 1
max_num=A[0]
while i<len(A):
if A[i]<=max_num:
res+=A[i]-max_num+1
A[i]=max_num+1
max_num=max_num+1
else:
max_num=A[i]
i+=1
return( sum(A)-s)