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  */

 

posted @ 2016-11-04 16:52  zslhq~  阅读(272)  评论(0编辑  收藏  举报