0
点赞
收藏
分享

微信扫一扫

【力扣刷题总结之384. 打乱数组】

洲行 2022-02-03 阅读 30

相关标签


一、题目要求

 二、题解和代码实现

1.题解

官方题解,主要看洗牌算法

2.代码实现

代码如下(示例):

class Solution {
int[] bufnums;//用于存储原始数组
int[] renums;//用于进行随机打乱的数组
private static Random rand = new Random();


public Solution(int[] nums) {
bufnums = Arrays.copyOf(nums,nums.length);//把输入的数组拷贝存储进数组
renums = nums;
}

public int[] reset() {
return bufnums;
}

public int[] shuffle() {
shuff(renums);
return renums;
}


public static void swap(int[] a, int i, int j) {//交换位置
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}

public static void shuff(int[] arr) {
int length = arr.length;
for (int i = length; i > 0; i--) {
// rand.nextInt(x) 代表取区间[0,x)内随机一个整数
int randInd = rand.nextInt(i);
swap(arr, randInd, i - 1);
}

}
}

/**
* 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();
*/
举报

相关推荐

0 条评论