LeetCode 384. Shuffle an Array
来源:互联网 发布:it就业培训学校 编辑:程序博客网 时间:2024/06/05 19:04
384. Shuffle an Array
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();
题目大意:实现洗牌算法。给定一个没有重复元素的数组,写shuffle和set函数,shuffle函数要求对nums数组进行洗牌然后返回,set函数要求返回原来的nums数组~
分析:设立两个数组nums和origin,如果set就返回不会更改的origin数组,如果要洗牌,从nums的最后一位开始,设index为0~n-1中的一个随机数,产生后将index与最后一位元素进行交换,这样最后一位就算敲定了,然后再往前一位,假设当前位的下标是k,那就产生0~k之间的一个随机数,然后交换,以此类推,rand() % (i + 1)表示生成0~i中的一个随机数~直到第一位为止~
class Solution {private: vector<int> nums; vector<int> origin;public: Solution(vector<int> nums) { this->nums = nums; this->origin = nums; } /** Resets the array to its original configuration and return it. */ vector<int> reset() { return origin; } /** Returns a random shuffling of the array. */ vector<int> shuffle() { int n = nums.size(); for(int i = n - 1; i >= 0; i--) { int index = rand() % (i + 1); swap(nums[i], nums[index]); } return nums; }};/** * 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(); */
- [leetcode] 384. Shuffle an Array
- 【leetcode】384. Shuffle an Array
- 384.[LeetCode]Shuffle an Array
- [LeetCode]384. Shuffle an Array
- [LeetCode] 384. Shuffle an Array
- LeetCode 384. Shuffle an Array
- LeetCode 384. Shuffle an Array
- LeetCode 384. Shuffle an Array
- [Leetcode]384. Shuffle an Array
- 【LeetCode】 384. Shuffle an Array
- [leetcode]384. Shuffle an Array
- LeetCode 384. Shuffle an Array
- [LeetCode]384. Shuffle an Array
- [LeetCode]384. Shuffle an Array
- leetcode 384. Shuffle an Array
- 384. Shuffle an Array [Leetcode]
- LeetCode:384. Shuffle an Array
- 【Leetcode】Shuffle an Array
- zookeeper清理日志
- sql的nvl用法
- 开源第三方登录组件OAuthLogin2.0 架构解析及开源地址
- 微信小程序之滑块视图容器(swiper)
- 句柄泄漏调试经验
- LeetCode 384. Shuffle an Array
- excellentexport--一个可以导出报表的插件
- Android Studio 统计项目的代码总行数
- 使用for in遍历数组
- hadoop集群部署
- 欢迎使用CSDN-markdown编辑器
- TCP/IP、Http、Socket的区别
- CoordinatorLayout的使用如此简单
- hide handkerchief HDU - 2104