1. 时间复杂度为O(n)
2. 生成range(start, end)的数组
3. 随机数生成函数
4. 将随机数选中的位置与数组末尾交换,提高效率 。交换操作时间复杂度为O(1)
[arr[arr.length - 1 - j], arr[selected]] = [arr[selected], arr[arr.length - 1 - j]];
const _getUniqueNums = (start, end, n) => {
// 补全代码
const arr = Array.from(new Array(end - start + 1), (v, i) => start + i);
const randIndex = (max) => Math.floor(Math.random() * max);
const ans = [];
for (let j = 0; j < n; j++) {
let selected = randIndex(arr.length - j);
ans.push(arr[selected]);
[arr[arr.length - 1 - j], arr[selected]] = [arr[selected], arr[arr.length - 1 - j]];
}
return ans;
}



京公网安备 11010502036488号