Given an array of integers A, a move consists of choosing any A[i],
and incrementing it by 1.Return the least number of moves to make every
value in A unique.
Example 1:
Input: [1,2,2]
Output: 1
Explanation: After 1 move, the array could be [1, 2, 3].
Example 2:
Input: [3,2,1,2,1,7]
Output: 6
Explanation: After 6 moves, the array could be [3, 4, 1, 2, 5, 7].
It can be shown with 5 or less moves that it is impossible for the array to have all unique values.
对于相同的数字不断加1使得与所有的数字不相同。
返回加1的次数。
分析:循环两两比较使得每两个之间不相等,最终得到一个递增序列。
代码:
class Solution:
def minIncrementForUnique(self, A: List[int]) -> int:
moves = 0
# First sort the array
A.sort()
print(A)
for i in range(1,len(A)):
# If current element is greater than or equal to previous element just increase moves by that much amount.
# Also increase the current element by that much amount.
if A[i]<=A[i-1]:
moves+=(A[i-1]-A[i]+1)
A[i]+=(A[i-1]-A[i]+1)
return moves