美文网首页
(随机)384. 打乱数组

(随机)384. 打乱数组

作者: 来到了没有知识的荒原 | 来源:发表于2021-07-31 18:03 被阅读0次

    384. 打乱数组

    Fisher-Yates算法
    红色箭头是随机挑到的,蓝色箭头是当前下标,需要蓝色和红色箭头的元素互换,然后蓝色跳到下一个。

    题解

    class Solution {
    public:
        vector<int> arr;
    
        Solution(vector<int> &nums) {
            arr = nums;
        }
    
        /** Resets the array to its original configuration and return it. */
        vector<int> reset() {
            return arr;
        }
    
        /** Returns a random shuffling of the array. */
        vector<int> shuffle() {
            vector<int> tmp = arr;
            vector<int> res(arr.size());
            for (int i = 0; i < tmp.size(); i++) {
                int sz = tmp.size() - i;
                int idx = rand() % sz;
                swap(tmp[i], tmp[i + idx]);
                res[i] = tmp[i];
            }
            return res;
        }
    };
    

    相关文章

      网友评论

          本文标题:(随机)384. 打乱数组

          本文链接:https://www.haomeiwen.com/subject/qpaqvltx.html