384. Shuffle an Array 发表于 2017-11-06 | 分类于 刷题总结 解法1: O(N), Fisher-Yates Algorithm参看这个geeksforgeeks的文章12345678910111213141516171819202122232425262728293031323334353637383940414243class Solution { int[] data = null; int[] backup = null; Random random; public Solution(int[] nums) { data = nums; backup = Arrays.copyOf(data, data.length); random = new Random(System.currentTimeMillis()); } /** Resets the array to its original configuration and return it. */ public int[] reset() { data = Arrays.copyOf(backup, backup.length); return data; } /** Returns a random shuffling of the array. */ public int[] shuffle() { for (int i = data.length - 1; i > 0; i--) { int pick = random.nextInt(i + 1); swap(i, pick); } return data; } private void swap(int i, int j) { int temp = data[i]; data[i] = data[j]; data[j] = temp; }}/** * 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(); */