题解 | #无重复数组#

无重复数组

http://www.nowcoder.com/practice/d2fa3632268b41df9bc417b74802ad8c

07_无重复数组

本题考点:random

根据题目要求,在某个范围之内生成不重复的随机数并返回,核心步骤有:

  1. 创建一个空数组用来存储随机数
  2. 进入次数为n的循环中生成随机数,如果数组中没有该随机数,那么就将随机数存入数组

参考答案

const _getUniqueNums = (start,end,n) => {
    let arr = []
    while (arr.length < n) {
        let v = Math.floor(Math.random() * (end - 1) + start)
        if (arr.indexOf(v) === -1) {
            arr.push(v)
        }
    }
    return arr
}

全部评论
这样写虽然简洁,但性能不好,无效的循环很多,特别是当 n 接近于 start - end 的时候。
2 回复 分享
发布于 2021-12-07 17:08
题干没有说是整数,为什么要floor一下?
点赞 回复 分享
发布于 2023-04-20 11:37 陕西
end-start+1
点赞 回复 分享
发布于 2023-02-01 16:26 北京
会有问题的,例如当生成3,7的数据,这时候若random生成0.9。。。。,这时候0.9×6 => 5, 5+3就已经超过7了
点赞 回复 分享
发布于 2022-09-15 10:24 广东

相关推荐

脑袋锈住了:你这算啥,哥们中科院中强所硕士,本科211,叫我去干分拣,时薪20
点赞 评论 收藏
分享
昨天 07:53
门头沟学院 C++
心愿便利贴:工作了以后回头再看待这个问题,从客观的视角来讲是因为每个人对自己的要求不同,学习好的人对自己的要求很高,所以觉得考不好就天塌了,认为自己学习好并且值得一份好工作的人也是一样,找不到符合自己预期的工作肯定也会觉得是侮辱,牛客上有很多名校大学生,肯定会存在这种好学生心态啊,“做题区”从来都不是贬义词,这是大部分普通人赖以生存的路径,这个有什么好嘲讽的,有“好学生心态”没有错,但是不要给自己太大的压力了
点赞 评论 收藏
分享
评论
15
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务