- 384 打乱数组
洗牌算法:Fisher-Yates Shuffle
每个元素被放置在新数组中的第i个位置概率是
参考:CSDN
for (int i = length - 1; i >= 0; i--) {
int index = random.nextInt(i+1);
swap(arr[i], arr[index]);
}
- 380 常数时间插入、删除和获取随机元素
要求O(1)复杂度的题目基本都需要使用哈希表。
for (int i = length - 1; i >= 0; i--) {
int index = random.nextInt(i+1);
swap(arr[i], arr[index]);
}