給定整數陣列 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
最初想到的使雜湊+線性探測,但是最壞的情況是o(n^2),優化時間複雜度為o(nlogn)
雜湊+線性探查
int minincrementforunique(vector& a) ;
int ops = 0;
for(int i=0;i排序+遍歷
int minincrementforunique(vector& a)
}return ops;
}
leetcode945 使陣列唯一的最小增量
給定整數陣列 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 操作...
LeetCode 945 使陣列唯一的最小增量
給定整數陣列 a,每次 move 操作將會選擇任意 a i 並將其遞增 1。返回使 a 中的每個值都是唯一的最少操作次數。示例 1 輸入 1,2,2 輸出 1 解釋 經過一次 move 操作,陣列將變為 1,2,3 示例 2 0 a.length 40000 0 a i 40000 我是用雜湊表做的...
leetcode945 使陣列唯一的最小增量
給定整數陣列 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 操作...