Leetcode 384. Shuffle an Array
- 题目
- 解法:Fisher-Yates Algorithm
题目
解法:Fisher-Yates Algorithm
通过调换数组位置的方式产生shuffle效果
python代码如下:
复制有问题,截图吧
C++版本如下:
注意一下rand函数的用法,见链接:https://www.cnblogs.com/yuehouse/p/10116691.html
class Solution {
vector<int> original;
public:Solution(vector<int>& nums){
original = nums;}/** Resets the array to its original configuration and return it. */vector<int> reset() {
return original;}/** Returns a random shuffling of the array. */vector<int> shuffle() {
vector<int> shuffled(original);int n = original.size();for (int i=0;i<n;i++){
int swap_idx = rand() % (n-i);swap(shuffled[i],shuffled[i+swap_idx]);}return shuffled;}
};