leetcode384——Shuffle an Array
915 단어 데이터 구조-배열
분석: Fisher - Yates 카드 세척 알고리즘.배열 의 모든 요 소 를 옮 겨 다 니 며 현재 요소 와 무 작위 로 선택 한 아래 표 시 된 요 소 를 서로 교환 합 니 다.
코드:
class Solution {
vector data;
public:
Solution(vector& nums) {
data = nums;
}
/** Resets the array to its original configuration and return it. */
vector reset() {
return data;
}
/** Returns a random shuffling of the array. */
vector shuffle() {
vector ans(data);
for (int i = 0;i < ans.size();i++) {
swap(ans[i], ans[rand() % (i + 1)]);
}
return ans;
}
};
/**
* Your Solution object will be instantiated and called as such:
* Solution* obj = new Solution(nums);
* vector param_1 = obj->reset();
* vector param_2 = obj->shuffle();
*/