题解 | #无重复数组#

无重复数组

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

思路:使用数组res存储结果,当res的长度小于n时,需要一直创建数组元素,使用Math.random方法创建[start,end]区间的随机整数val,使用includes(val)方法判断数组中是否包含元素val,当res中不包含val时则使用push方法将val加入到结果数组res中。

<script>
   const _getUniqueNums = (start,end,n) => {
       var res=[]
       while(res.length<n)
       {
          //[start,end]
          var val=Math.floor(Math.random()*(end-start+1))+start
          if(!res.includes(val))
            res.push(val)
       }
       return res
   }
</script>

思路:使用set去重,因为set中不允许出现重复元素。创建set使用new Set(),求解set长度使用size,向set中添加元素使用add,向set中删除元素使用delete,将set转换为array使用[...set]。

<script>
  const _getUniqueNums = (start,end,n) => {
    var arr=new Set()
    while(arr.size<n)
    {
       arr.add(Math.floor(Math.random()*(end-start+1))+start)
    }
    return [...arr]
  }
</script>

总结:Math.random()创建[0,1)随机数,Math.random()*(end-start+1)创建[0,end-start+1)随机数,Math.floor(Math.random()*(end-start+1))创建[0,end-start]整数,Math.floor(Math.random()*(end-start+1))+start创建[start,end]整数。array.length求解数组长度;array.includes(val)判断数组中是否存在元素val;array.push(val)表示将元素val加入数组。创建set使用new Set(),求解set长度使用size,向set中添加元素使用add,向set中删除元素使用delete,将set转换为array使用[...set]。

#无重复数组#
前端js面试 文章被收录于专栏

前端js面试,帮助你更好的理解js。

全部评论

相关推荐

救救孩子的秋招吧:快手纯**公司,暑假实习面试官那个女的,板着个脸像我欠他钱似的,后面直接拒了,我同学去了两个月直呼**公司,秋招也不可能会回去了
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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