https://leetcode-cn.com/problems/shuffle-an-array/

    • 0~N - 1位置随机选一个数与N- 1位置的数交换
      • 0~N - 2位置随机选一个数与N - 2位置的数交换,
        • ……
    1. class Solution {
    2. private int[] origin;
    3. private int[] shuffle;
    4. private int N;
    5. public Solution(int[] nums) {
    6. origin = nums;
    7. N = nums.length;
    8. shuffle = new int[N];
    9. for (int i = 0; i < N; i++) {
    10. shuffle[i] = origin[i];
    11. }
    12. }
    13. public int[] reset() {
    14. return origin;
    15. }
    16. public int[] shuffle() {
    17. for (int i = N - 1; i >= 0; i--) {
    18. int r = (int) (Math.random() * (i + 1));
    19. int tmp = shuffle[r];
    20. shuffle[r] = shuffle[i];
    21. shuffle[i] = tmp;
    22. }
    23. return shuffle;
    24. }
    25. }