JavaScriptに基づくプログラミング問題1:配列中の重複した数字を見つける
1247 ワード
タイトルの説明:長さnの整数配列numsを指定します.配列中の数字は全部0~n-1の範囲にあります.配列の中にはいくつかの数字が重複していますが、いくつかの数字が重複しているかは分かりません.各数字が何回繰り返されているかは分かりません.配列の中の任意の重複した数字を探してください.注意:いくつかの数字が0〜n−1の範囲内にない場合、または配列に重複した数字が含まれていない場合、-1を返します.コード:
<script type="text/javascript">
function find(num) {
var n = num.length;
// 0~n-1
for (var i = 0; i < n; i++) {
if (num[i] < 0 || num[i] > n)
return -1;
}
//0 1 2 3 4 5 6
//2 3 1 0 1 5 0
//1 0 2 3 1 5 0
//1 1 2 3 0 5 0
//0 1 2 3 0 5 1
for (var i = 0; i < n; i++) {
// i i , num[i] num[i]
if (num[i] != i && num[num[i]] != num[i]) {
//swap(num[num[i]],num[i] )
var t = num[num[i]];
num[num[i]] = num[i];
num[i] = t;
}
// i i num[i] i
if (num[i] != i && num[num[i]] == num[i]) {
return num[i];
}
}
return -1;
}
var num = [2, 3, 1, 0, 1, 5, 0];
var a = find(num);
console.log(a);
</script>
</code></pre>
</div>
</div>
</div>
</div>