0
点赞
收藏
分享

微信扫一扫

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

洲行 2022-02-03 阅读 31

相关标签


一、题目要求

 二、题解和代码实现

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 条评论