这类主要是会用到基础的数据结构,考察的是对基础数据结构的掌握程度和灵活使用。
1. Shuffle an array
随机打乱一个没有重复元素的数组
这里我们遍历数组,然后将第i个元素与i+1前的任意元素交换位置。
/**
*
*/
package leetcode;
import java.util.Random;
public class ShuffleSolution {
private int[] nums;
private Random random=null;
public ShuffleSolution(int[] nums){
this.nums=nums;
this.random=new Random();
}
public int[] reset(){
return nums;
}
public int[] shuffle(){
if (nums==null)
return null;
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[] a, int i, int j) {
int tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}