LeetCode Shuffle an Array(打亂陣列)
打亂一個沒有重複元素的陣列。
示例:
// 以數字集合 1, 2 和 3 初始化陣列。
int[] nums = {1,2,3};
Solution solution = new Solution(nums);
// 打亂陣列 [1,2,3] 並返回結果。任何 [1,2,3]的排列返回的概率應該相同。
solution.shuffle();
// 重設陣列到它的初始狀態[1,2,3]。
solution.reset();
// 隨機返回陣列[1,2,3]打亂後的結果。
solution.shuffle();
解法一:
遍歷陣列,每次隨機生成一個下標位置,使用 Random.nextInt()
,然後交換當前遍歷位置和隨機生成的下標位置的數字,這樣如果陣列有 n 個數字,那麼我們也隨機交換了 n 組位置,從而達到了打亂陣列的目的。
注意:Random.nextInt()
方法的作用是生成一個隨機的 int 值,該值介於 [0,n) 的區間,也就是 0 到 n 之間的隨機 int 值,包含 0 而不包含 n。
private final int[] originalArray;
private final int n;
private final Random mRandom = new Random();
public Solution(int[] nums) {
n = nums.length;
originalArray = nums;
}
/**
* Resets the array to its original configuration and return it.
*/
public int[] reset() {
return originalArray;
}
/**
* Returns a random shuffling of the array.
*/
public int[] shuffle() {
int[] randomArray = new int[n];
for (int i = 0; i < n; i++) {
randomArray[i] = originalArray[i];
}
for (int i = 0; i < n; i++) {
int r = i + mRandom.nextInt(n-i);
int temp = randomArray[r];
randomArray[r] = randomArray[i];
randomArray[i] = temp;
}
return randomArray;
}
相關文章
- 打亂陣列陣列
- JavaScript 陣列順序打亂JavaScript陣列
- js陣列排序和打亂JS陣列排序
- Array陣列陣列
- JavaScript 陣列中元素隨機打亂排序JavaScript陣列隨機排序
- JavaScript Array 陣列JavaScript陣列
- day05陣列array陣列
- 內建物件--Array(陣列)物件陣列
- Leetcode每日一題:992.sort-array-by-parity-ii(按奇偶排序陣列Ⅱ)LeetCode每日一題排序陣列
- JavaScript刪除array陣列元素JavaScript陣列
- Knockout Observable Array(監控陣列)陣列
- TPU &“脈動陣列”(systolic array)陣列
- 瞭解下C# 陣列(Array)C#陣列
- linux Shell 命令列-03-array Shell 陣列Linux命令列陣列
- 【Leetcode】1528. Shuffle StringLeetCode
- Array.apply生成陣列小結APP陣列
- Go 基礎教程--6 陣列 ArrayGo陣列
- Go 基礎教程--5 陣列 ArrayGo陣列
- 雙陣列字典樹(Double Array Trie)陣列
- PHP陣列函式-array_mapPHP陣列函式
- 【leetcode】26. Remove Duplicates from Sorted Array 刪除有序陣列的重複元素LeetCodeREM陣列
- LeetCode刷題—陣列LeetCode陣列
- JS陣列Array的全部方法彙總JS陣列
- Array · 刪除陣列中指定的元素陣列
- LeetCode 189 旋轉陣列LeetCode陣列
- 【LeetCode-陣列】陣列式整數加法LeetCode陣列
- javascript 陣列(array) 常用的方法集錦(上)JavaScript陣列
- 二維陣列排序函式array_multisort()陣列排序函式
- Array · 判斷某元素是否在陣列中陣列
- JavaScript 中的陣列分組:array.groupBy()JavaScript陣列
- Python 列表 list 陣列 array 常用操作集錦Python陣列
- Leetcode Sort ArrayLeetCode
- 【LeetCode】189. 旋轉陣列LeetCode陣列
- 【leetcode】252 會議室(陣列)LeetCode陣列
- leetcode題解(陣列問題)LeetCode陣列
- leetcode 3366. 最小陣列和LeetCode陣列
- Leetcode——349-兩陣列交集LeetCode陣列
- LeetCode-189-旋轉陣列LeetCode陣列