实现一个函数 find(nums) 返回 nums 中第三大值的下标,如果不足3个数返回 -1

今日一道题: 实现一个函数 find(nums) 返回 nums 中第三大值的下标,如果不足3个数返回 -1
用的比较简单的去重方式,

存在一个问题:如果是第三大的数是几个重复的数,那第三大的数的下标算成啥,这里没有解决,希望有大佬提供好的方法

const find = nums => {
   
  if (nums.length < 3) {
   
    return -1
  }
  //利用ES6特性进行数组去重
  const newNums = [...new Set (nums)]
 
  for (let i = 0; i<newNums.length-1; i++) {
   
    for (let j = 0; j<newNums.length-1-i;j++) {
   
      //判断前一个大于后一个数时进行交换
      if (newNums[j] > newNums[j + 1]) {
   
        let temp = newNums[j]
        newNums[j] = newNums[j + 1]
        newNums[j + 1] = temp
      }
    }
  }
  return nums.indexOf(newNums[2])
}
console.log (find([3,10,8,9,9,10,10,18,8]))
全部评论

相关推荐

老板加个卤鸡蛋:HR看了以为来卧底来了
点赞 评论 收藏
分享
找工作勤劳小蜜蜂:自我描述部分太差,完全看不出想从事什么行业什么岗位,也看不出想在哪个地区发展,这样 会让HR很犹豫,从而把你简历否决掉。现在企业都很注重员工稳定性和专注性,特别对于热爱本行业的员工。 你实习的工作又太传统的it开发(老旧),这部分公司已经趋于被淘汰,新兴的互联网服务业,比如物流,电商,新传媒,游戏开发和传统的It开发有天然区别。不是说传统It开发不行,而是就业岗位太少,基本趋于饱和,很多老骨头还能坚持,不需要新血液。 工作区域(比如长三角,珠三角,成渝)等也是HR考虑的因素之一,也是要你有个坚定的决心。否则去几天,人跑了,HR会被用人单位骂死。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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