leetcode 384 打亂陣列
題目大意:
給你乙個整數陣列\(nums\),設計演算法來打亂乙個沒有重複元素的陣列。打亂後,陣列的所有排列應該是等可能的。
題解:
參考自leedcode官方題解
首先,我們考慮如何隨機打亂乙個陣列。
不妨設陣列\(nums\),其長度為\(n\)。我們可以使用如下方法打亂:
對於原陣列\(nums\)中的數\(num\)來說,被移動到打亂後的陣列的第\(i\)個位置的概率為:
\[p[i]=
\left\
(\frac \times \frac \times ... \times \frac) \times \frac = \frac, i>0 \\
\frac, i = 0
\end
\right.
\]因此,對於原陣列\(nums\)中的任意乙個數,被移動到打亂後的陣列的任意乙個位置的概率都是相同的。
class solution
vectorreset()
vectorshuffle()
return nums;
}};
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 重設陣列到它的初始...