384. Shuffle an Array**
来源:互联网 发布:java多线程socket通信 编辑:程序博客网 时间:2024/06/05 05:39
Shuffle a set of numbers without duplicates.
// 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();
public class Solution { private int[] nums; private Random random; public Solution(int[] nums) { this.nums = nums; random = new Random(); } /** Resets the array to its original configuration and return it. */ public int[] reset() { return nums; } /** Returns a random shuffling of the array. */ public int[] shuffle() { if(nums==null) return null; int[] a = nums.clone(); for(int j=1;j<a.length;j++){ int i=random.nextInt(j+1); swap(a,i,j); } return a; } private void swap(int[] a, int i, int j){ int t = a[i]; a[i] = a[j]; a[j] = t; }}/** * Your Solution object will be instantiated and called as such: * Solution obj = new Solution(nums); * int[] param_1 = obj.reset(); * int[] param_2 = obj.shuffle(); */
总结:nextInt(j + 1)
returns a random num between [0, j]
. By nextInt(j)
, you never get a chance to return the original order array.
array.clone生成一个新数组
0 0
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array**
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- 384. Shuffle an Array
- [leetcode] 384. Shuffle an Array
- 【leetcode】384. Shuffle an Array
- 384.[LeetCode]Shuffle an Array
- [LeetCode]384. Shuffle an Array
- AFNetworking汉化之“AFURLSessionManager”
- Linux中程序详细的内存使用查看
- 微信小程序开发<二>
- Hadoop shell常用命令
- 10.Android11种传感器介绍
- 384. Shuffle an Array**
- 单例模式的总结
- 第0章 Selenium简介
- 自定义属性流程
- P1088 火星人
- hdu 1007 最小点对
- 算法训练 筛选号码
- 对于CSDN的建议
- HDU 1229 还是A+B