数组—数组中重复的数字
题目描述
在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
题目分析
例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。
思路(一)
先对数组进行排序,再对相邻的两个数字进行判断是否相等,相等即为重复,为避免i+1溢出,所以循环时采用(i<numbers.length-1)
function duplicate(numbers, duplication)
{
// write code here
//这里要特别注意~找到任意重复的一个值并赋值到duplication[0]
//函数返回True/False
if(numbers==null)return false;
if(numbers.length==1)return false;
numbers.sort();
for(var i=0;i<numbers.length-1;i++)
{
if(numbers[i]==numbers[i+1]){
duplication[0]=numbers[i];
return true;
}
}
return false;
}
思路(二)
第一个for循环,i从0开始进入下一个for循环,这里的(下一个for循环)j从最后一个索引(numbers.length-1)向前(j–)循环,通过(j>i)的判断条件,判断i索引后面的数字是否与i索引的数字相等,是否重复,有重复的数字 / j循环结束后跳出,继续循环第二个 i…,有重复的数字结束跳出,直到最后一个循环为 i=numbers.length-2与 j=numbers.length-1 两个索引所代表的值进行判断。
function duplicate(numbers, duplication)
{
// write code here
//这里要特别注意~找到任意重复的一个值并赋值到duplication[0]
//函数返回True/False
if(numbers==null)return false;
if(numbers.length==1)return false;
for(let i=0;i<numbers.length-1;i++){
for(let j=numbers.length-1;j>i;j--){
if(numbers[i]==numbers[j]){
duplication[0]=numbers[i]
return true;
}
}
}
return false;
}