Leetcode 945 使陣列唯一的最小增量

2021-10-04 06:48:05 字數 547 閱讀 2705

給定整數陣列 a,每次 move 操作將會選擇任意 a[i],並將其遞增 1。

返回使 a 中的每個值都是唯一的最少操作次數。

示例 1:

輸入:[1,2,2]

輸出:1

解釋:經過一次 move 操作,陣列將變為 [1, 2, 3]。

示例 2:

0 <= a.length <= 40000

0 <= a[i] < 40000

採用貪心策略(重複元素後的最佳 move 位置,例如 [ 1, 1, 3 ] 中,對重複元素 1 的最佳 move 位置為 2 而不是 4)對陣列元素所佔範圍的空隙進行「占領」。首先,對陣列進行排序;其次,將重複元素入棧(其實也可以不用棧);最後,將棧中元素放入到陣列元素範圍內的空隙中,並記錄所需move運算元。實現如下:

class solution 

int partition(vector& a, int lo, int hi)

swap(a[lo], a[j]);

return j;

}};

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 操作,陣列將變為...

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 我是用雜湊表做的...