JavaScriptに基づくプログラミング問題1:配列中の重複した数字を見つける


タイトルの説明:長さ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>