题目

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。

思路

利用对象或者散列表或者下标检测

// 推荐解法
function duplicate(numbers, duplication)
{
// write code here
//这里要特别注意~找到任意重复的一个值并赋值到duplication[0]
//函数返回True/False
let hash = []
for (let i = 0; i < numbers.length; i++) {
  if (!hash[numbers[i]]) {
    hash[numbers[i]] = 1
  } else {
    if (++hash[numbers[i]] === 2) {
      duplication[0] = numbers[i]
      return true
    }
  }
}
return false
}

// 解法1:下标检测
function duplicate(numbers, duplication)
{
// write code here
//这里要特别注意~找到任意重复的一个值并赋值到duplication[0]
//函数返回True/False
let obj = {}
for(let i = 0; i < numbers.length; i++) {
  if(numbers.indexOf(numbers[i]) !== i) {
    duplication[0] = numbers[i]
    return true
  }
}
return false
}

// 解法2:对象特性
function duplicate(numbers, duplication)
{
// write code here
//这里要特别注意~找到任意重复的一个值并赋值到duplication[0]
//函数返回True/False
let obj = {}
for (let i = 0; i < numbers.length; i++) {
  if (!obj[numbers[i]]) {
    obj[numbers[i]] = true
  } else {
    duplication[0] = numbers[i]
    return true
  }
}
return false
}

// 解法3:哈希散列法,其实原理和obj差不多
function duplicate(numbers, duplication)
{
// write code here
//这里要特别注意~找到任意重复的一个值并赋值到duplication[0]
//函数返回True/False
let hash = []
for (let i = 0; i < numbers.length; i++) {
  if (!hash[numbers[i]]) {
    hash[numbers[i]] = 1
  } else {
    if (++hash[numbers[i]] === 2) {
      duplication[0] = numbers[i]
      return true
    }
  }
}
return false
}

最新文章

  1. VS2012配置使用ICE通信接口
  2. selenium + python自动化测试环境搭建
  3. Ember.js 应用入口
  4. BI之SSAS完整实战教程5 -- 详解多维数据集结构
  5. poj 题目分类(2)
  6. Java实现邮箱找回密码 --转载
  7. 7za 解压文件
  8. 2016032901 - ubuntu安装jdk
  9. MySQL内存体系架构及参数总结 ---图解
  10. [Usaco2008 Mar]River Crossing渡河问题[简单DP]
  11. windows中通过bat批处理打开exe文件
  12. css 如何隐藏滚动条
  13. Django-F,Q查询,Templatetags,session,中间件
  14. 数组引用:C++ 数组做参数 深入分析
  15. JavaScript基础知识梳理,你能回答几道题?
  16. ZOJ 3795 Grouping (强连通缩点+DP最长路)
  17. 使用Java或 JavaScript获取 方括号中的内容
  18. springboot打成Jar包后部署至Linux服务器上
  19. Java 8 新特性-菜鸟教程 (8) -Java 8 日期时间 API
  20. 注解Annotation实现原理与自定义注解例子

热门文章

  1. 洛谷 P1339 [USACO09OCT]热浪Heat Wave(dijkstra)
  2. [Codeforces 163D]Large Refrigerator (DFS+剪枝)
  3. java静态方法使用泛型
  4. CSRF——跨站请求伪造
  5. ASP.NET CORE 2.0 模板 (Admin LTE)
  6. Kaldi学习手记(一):Kaldi的编译安装
  7. 2018-2-13-WPF-延迟加载
  8. CMS(1)
  9. 六 BASH 高级变量
  10. kd树解平面最近点对