题解 | #创建数组#
无重复数组
http://www.nowcoder.com/practice/d2fa3632268b41df9bc417b74802ad8c
一般思路,生成的随机数和数组验重,重复则重新生成随机数,这样造成很多无效循环,性能较差,分享一个性能为o(n)的思路:
- 生成一个全集数组
- 生成数组长度的随机数index
- 将该index对应元素添加到随机数组中
- 全集数组中删除生成的随机元素
- 循环2 3 4步骤
const _getUniqueNums = (start,end,n) => {
// 补全代码
var arr = []
var randomArr = []
for (let index = 0; index < end - start + 1; index++) {
arr.push(start + index)
}
while (randomArr.length < n) {
var randomIndex = Math.floor(Math.random() * arr.length)
randomArr.push(arr[randomIndex])
arr.splice(randomIndex, 1)
}
return randomArr
}
查看8道真题和解析
