1、暴力
class Solution {
public:
Solution(vector<int>& nums) {
data = nums;
}
/** Resets the array to its original configuration and return it. */
vector<int> reset() {
return data;
}
/** Returns a random shuffling of the array. */
vector<int> shuffle() {
vector<int> ans;
vector<int> help=data;
int n = data.size();
for (int i = n-1; i >=0; i--) {
int k=rand()%(i+1);
ans.push_back(help[k]);
help.erase(help.begin()+k);
}
return ans;
}
private:
vector<int> data;
};
2、交换(Fisher-Yates 洗牌算法)
vector<int> shuffle() {
vector<int> ans = data;
int n = data.size();
for (int i = 0; i < n; i++) {
int k = rand() % (n - i);
swap(ans[i], ans[i + k]);
}
return ans;
}