leetcode384——Shuffle an Array

제목: 중복 요소 가 없 는 배열 을 흐 트 러 뜨 립 니 다.
분석: 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();
 */

좋은 웹페이지 즐겨찾기