2021.09.28 - 097.打乱数组

1. 题目

在这里插入图片描述

2. 思路

(1) 洗牌算法

  • 遍历数组,每次从后面的元素中随机取一个元素与当前元素交换。

3. 代码

import java.util.*;

public class Test {
    
    
    public static void main(String[] args) {
    
    
    }
}

class Solution {
    
    
    private int[] arr;
    private int[] cur;
    private Random random = new Random();

    public Solution(int[] nums) {
    
    
        arr = nums;
        cur = arr.clone();
    }

    public int[] reset() {
    
    
        cur = arr.clone();
        return cur;
    }

    public int[] shuffle() {
    
    
        for (int i = 0; i < cur.length; i++) {
    
    
            int swap = random.nextInt(cur.length - i) + i;
            int temp = cur[i];
            cur[i] = cur[swap];
            cur[swap] = temp;
        }
        return cur;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44021223/article/details/120531249