打亂乙個沒有重複元素的陣列。
示例:
// 以數字集合 1, 2 和 3 初始化陣列。int nums = ;
solution solution = new solution(nums);
// 打亂陣列 [1,2,3] 並返回結果。任何 [1,2,3]的排列返回的概率應該相同。solution.shuffle();
// 重設陣列到它的初始狀態[1,2,3]。solution.reset();
// 隨機返回陣列[1,2,3]打亂後的結果。原博位址solution.shuffle();
這是乙個經典的等概率洗牌演算法,首先是最基本的模擬思路
class solution
/** resets the array to its original configuration and return it. */
vectorreset()
/** returns a random shuffling of the array. */
vectorshuffle()
// 因為可能連續呼叫shuffle函式,所以最後要將temp還原
temp = nums;
return res;
}};
/** * your solution object will be instantiated and called as such:
* solution obj = new solution(nums);
* vectorparam_1 = obj.reset();
* vectorparam_2 = obj.shuffle();
*/
經典的洗牌演算法,首先從i從[0,n),每次隨機取[i,n-i)的下標的數,與第i個元素交換
class solution
/** resets the array to its original configuration and return it. */
vectorreset()
/** returns a random shuffling of the array. */
vectorshuffle() {
vectorvshuffle = elements;
//srand(time(null));
for(int i=0;iparam_1 = obj.reset();
* vectorparam_2 = obj.shuffle();
*/
LeetCode 384 打亂陣列
打亂乙個沒有重複元素的陣列。示例 以數字集合 1,2 和 3 初始化陣列。int nums solution solution new solution nums 打亂陣列 1,2,3 並返回結果。任何 1,2,3 的排列返回的概率應該相同。solution.shuffle 重設陣列到它的初始狀態 ...
Leetcode 384 打亂陣列
打亂乙個沒有重複元素的陣列。示例 以數字集合 1,2 和 3 初始化陣列。int nums solution solution new solution nums 打亂陣列 1,2,3 並返回結果。任何 1,2,3 的排列返回的概率應該相同。solution.shuffle 重設陣列到它的初始狀態 ...
LeetCode 384 打亂陣列
題目 打亂乙個沒有重複元素的陣列。示例 以數字集合 1,2 和 3 初始化陣列。int nums solution solution new solution nums 打亂陣列 1,2,3 並返回結果。任何 1,2,3 的排列返回的概率應該相同。solution.shuffle 重設陣列到它的初始...