首页 > 其他 > 详细

384. Shuffle an Array

时间:2019-10-18 12:33:25      阅读:31      评论:0      收藏:0      [点我收藏+]
 1 class Solution {
 2 private:
 3     vector<int> vi;
 4     
 5 public:
 6     Solution(vector<int>& nums) {
 7         vi = nums;
 8     }
 9     
10     /** Resets the array to its original configuration and return it. */
11     vector<int> reset() {
12         return vi;
13     }
14     
15     int randnum(int left, int right){
16         //srand(int(time(0)));
17         int k = rand()%(right-left);
18         return k + left;
19     }
20     
21     /** Returns a random shuffling of the array. */
22     vector<int> shuffle() {
23         vector<int> cur=vi;
24         int sz = cur.size();
25         for(int i=0;i<sz;i++)
26             swap(cur[i], cur[randnum(i, sz)]);
27         
28         return cur;
29     }
30 };
31 
32 /**
33  * Your Solution object will be instantiated and called as such:
34  * Solution* obj = new Solution(nums);
35  * vector<int> param_1 = obj->reset();
36  * vector<int> param_2 = obj->shuffle();
37  */

 从第一个数开始遍历,假设数组长度为n,下标为0~n-1

遍历到下标为i的数时,随机生成一个[i,n-1]的数字s,交换num[i]和num[s]

遍历完成,即生成了一个随机序列。

384. Shuffle an Array

原文:https://www.cnblogs.com/zhuangbijingdeboke/p/11697407.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!