384. Shuffle an Array

来源:互联网 发布:网络零售额占社零比重 编辑:程序博客网 时间:2024/06/05 12:25

题目

Shuffle a set of numbers without duplicates.

Example:

// Init an array with set 1, 2, and 3.int[] nums = {1,2,3};Solution solution = new Solution(nums);// Shuffle the array [1,2,3] and return its result. Any permutation of [1,2,3] must equally likely to be returned.solution.shuffle();// Resets the array back to its original configuration [1,2,3].solution.reset();// Returns the random shuffling of array [1,2,3].solution.shuffle();
分析

给定一个数组nums,对其进行洗牌,要求nums中的每个元素都以等概率被移动,并且能够返回初始数组。

class Solution {public:    Solution(vector<int> nums) :v(nums){            }        /** Resets the array to its original configuration and return it. */    vector<int> reset() {        return v;    }        /** Returns a random shuffling of the array. */    vector<int> shuffle() {        vector<int> res=v;        for(int i=0;i<v.size();i++)        {            int j=rand()%v.size();            swap(res[i],res[j]);        }        return res;    }private:    vector<int> v;};/** * Your Solution object will be instantiated and called as such: * Solution obj = new Solution(nums); * vector<int> param_1 = obj.reset(); * vector<int> param_2 = obj.shuffle(); */


0 0
原创粉丝点击