题解 | #无重复数组#

无重复数组

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

相关推荐

是每个人事都这样与找工作的人这样沟通吗?正常询问不可以吗
超时空记忆丶:这种人适合跟我聊 我能骂得她心里难受一天,这种byd一看就是欠骂,这么好的机会楼主别错过。
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
点赞 评论 收藏
分享
认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
学历算污点吗?
小何和:快毕业了,BOSS上的od闻着味就来了
点赞 评论 收藏
分享
评论
15
1
分享

创作者周榜

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