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

2021-10-04 06:33:34 字數 1248 閱讀 1982

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

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

示例 1:

輸入:[1,2,2]

輸出:1

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

示例 2:

0 <= a.length <= 40000

0 <= a[i] < 40000

我是用雜湊表做的,解題的關鍵在於,雜湊表的初始化。

有可能在經過n次的遞增,key+1的值並沒有記錄在雜湊表的鍵值裡面,

所以需要提前錄入,進行乙個雜湊表的初始化。

#include #include #include #include using namespace std;

class solution

/* 求最大值 */

for (int i = 0; i < a.size(); i++)

}/* 空間換時間 */

maxval = 2 * maxval + 1;

/* 初始化雜湊表:初始值為0 */

for (int i = 0; i < maxval; i++)

/* 記錄陣列的雜湊,記錄重複值 */

for (int i = 0; i < a.size(); i++)

}/* 如果存在key大於1,則key+1的value需要加上key值的(value-1),依次類推 */

for (int i = 0; i < maxval; i++)

}return num;

}private:

unordered_mapm_map;

};// 超時的遞迴演算法:

//class solution

// return num;

// }

//// void backtrace(int key)

// else

//// }

////private:

// int num;

// setm_set;

////};

int main() ;

solution* ps = new solution();

cout << ps->minincrementforunique(test) << endl;

return 0;

}

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 操作...

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 操作...