1. 程式人生 > >leetcode 945 Minimum Increment to Make Array Unique

leetcode 945 Minimum Increment to Make Array Unique

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=01 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)