Leetcode 384 打亂陣列 C

2021-09-19 10:41:48 字數 1410 閱讀 5476

打亂乙個沒有重複元素的陣列。

示例:

// 以數字集合 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 重設陣列到它的初始...