题解 | #无重复数组#

无重复数组

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 广东

相关推荐

05-24 14:12
门头沟学院 Java
点赞 评论 收藏
分享
评论
15
1
分享

创作者周榜

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