384. Shuffle an Array
不定期更新leetcode解题java答案。
采用pick one的方式选择题目。
题目要求实现一个新型的类,满足拥有包括构造函数在内的3个功能,容易看出:
1、构造函数用来存储或处理输入数组 ;
2、第一个方法reset(),返回输入数组;
3、第二个方法shuffle(),返回输入数组的随机排序的新数组。
思路为构造函数存入ArrayList中,方便后面函数既能返回原数组,又能返回随机顺序的数组。没有什么特别需要说的。
具体代码如下:
1 public class Solution { 2 ArrayList<Integer> list = new ArrayList(); 3 public Solution(int[] nums) { 4 for(int i = 0; i < nums.length; i++) 5 list.add(nums[i]); 6 } 7 8 /** Resets the array to its original configuration and return it. */ 9 public int[] reset() { 10 int[] result = new int[list.size()]; 11 for(int i = 0; i < list.size(); i++) 12 result[i] = list.get(i); 13 14 return result; 15 } 16 17 /** Returns a random shuffling of the array. */ 18 public int[] shuffle() { 19 ArrayList<Integer> arrayList = new ArrayList(); 20 for(int i = 0; i < list.size(); i++) 21 arrayList.add(list.get(i)); 22 23 int[] result = new int[list.size()]; 24 for(int i = 0; i < list.size(); i++) 25 result[i] = getRandom(arrayList); 26 return result; 27 } 28 29 public int getRandom(ArrayList<Integer> arrayList){ 30 int aim = (int) (Math.random() * arrayList.size()); 31 int tmp = arrayList.get(aim); 32 arrayList.remove(aim); 33 return tmp; 34 } 35 } 36 37 /** 38 * Your Solution object will be instantiated and called as such: 39 * Solution obj = new Solution(nums); 40 * int[] param_1 = obj.reset(); 41 * int[] param_2 = obj.shuffle(); 42 */