https://leetcode.com/problems/shuffle-an-array/#/description
shuffle一个数组
从前往后遍历,随机取已经遍历过的位置里面一个数与当前遍历到的位置交换
public class Solution {
int[] nums;
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;
}
// 又学一个api~
int[] a = nums.clone();
for (int i = 1; i < nums.length; i++) {
int j = random.nextInt(i + 1);
swap(a, i, j);
}
return a;
}
private void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}