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;
}
相關文章
- 打亂陣列陣列
- LeetCode-Shuffle an ArrayLeetCode
- JavaScript 陣列順序打亂JavaScript陣列
- js陣列排序和打亂JS陣列排序
- CoffeeScript攻略4.6:打亂陣列元素陣列
- Array陣列陣列
- JavaScript 陣列中元素隨機打亂排序JavaScript陣列隨機排序
- 【LeetCode 88_陣列】Merge Sorted ArrayLeetCode陣列
- 陣列洗牌演算法-shuffle陣列演算法
- JavaScript Array 陣列JavaScript陣列
- js打亂陣列順序程式碼例項JS陣列
- JavaScript之陣列ArrayJavaScript陣列
- 內建物件--Array(陣列)物件陣列
- 磁碟陣列(Disk array)原理陣列
- day05陣列array陣列
- [LeetCode] Search in Rotated Sorted Array 在旋轉有序陣列中搜尋LeetCode陣列
- JS 陣列亂序JS陣列
- TPU &“脈動陣列”(systolic array)陣列
- 瞭解下C# 陣列(Array)C#陣列
- JavaScript刪除array陣列元素JavaScript陣列
- Knockout Observable Array(監控陣列)陣列
- Array-like類陣列物件陣列物件
- [CareerCup] 17.6 Sort Array 排列陣列陣列
- 磁碟陣列(Disk array)原理(轉)陣列
- [LeetCode] Remove Duplicates from Sorted Array 有序陣列中去除重複項LeetCodeREM陣列
- 陣列指標:a pointer to an array,即指向陣列的指標陣列指標
- Go 基礎教程--6 陣列 ArrayGo陣列
- Go 基礎教程--5 陣列 ArrayGo陣列
- 雙陣列字典樹(Double Array Trie)陣列
- PHP陣列函式-array_mapPHP陣列函式
- javascript如何清空一個array陣列JavaScript陣列
- javascript型別系統——陣列arrayJavaScript型別陣列
- [筆記] 解碼Nginx:陣列(Array)筆記Nginx陣列
- [LeetCode] Kth Largest Element in an Array (找出陣列的第k大的元素)LeetCode陣列
- Python Numpy的陣列array和矩陣matrixPython陣列矩陣
- linux Shell 命令列-03-array Shell 陣列Linux命令列陣列
- Leetcode每日一題:992.sort-array-by-parity-ii(按奇偶排序陣列Ⅱ)LeetCode每日一題排序陣列
- Array · 刪除陣列中指定的元素陣列