题解 | #无重复数组#

无重复数组

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
会有问题的,例如当生成3,7的数据,这时候若random生成0.9。。。。,这时候0.9×6 => 5, 5+3就已经超过7了
点赞
送花
回复 分享
发布于 2022-09-15 10:24 广东
国泰君安
校招火热招聘中
官网直投
end-start+1
点赞
送花
回复 分享
发布于 2023-02-01 16:26 北京
题干没有说是整数,为什么要floor一下?
点赞
送花
回复 分享
发布于 2023-04-20 11:37 陕西

相关推荐

14 1 评论
分享
牛客网
牛客企业服务