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