package test; public class Arithmetic2 { public static void main(String[] args) { /* 題設:現有0到99,共計100個整數,各不相同,將所有數放入一 個數組,隨機排布。數組長度100,將其中任意一個數替換 成0到99另一個數(唯一重複的數字) 問題:將這個重複的數字找出來 */ /* * 構造題設 */ int[] num = new int[100]; for(int i=0;i<num.length;i++) { num[i]=i; } for(int i=0;i<10000;i++) { int num1 = (int)(Math.random()*100); int num2 = (int)(Math.random()*100); int temp = num[num1]; num[num1] = num[num2]; num[num2] = temp; } int n1 = (int)(Math.random()*100); int n2 = (int)(Math.random()*100); System.out.println("n1位置的數爲:" + num[n1] + "\tn2位置的數爲:" + num[n2]); num[n2] = num[n1]; System.out.println("n1換位後數爲:" + num[n1] + "\tn2換位後數爲:" + num[n2]); /* * 解決方案 */ //方案一 int num1 = 0; feng: for(int i=0;i<num.length;i++) { for(int j=i+1;j<num.length;j++) { if(num[i]==num[j]) { num1 = num[i]; break feng; } } } System.out.println("通過方案一找出來的重複數字爲:" + num1); //方案二 int[] tempNum = new int[100]; for(int i=0;i<num.length;i++) { if(tempNum[num[i]]==1) { System.out.println("通過方案二找出來的第一個數字爲:" + num[i]); }else { tempNum[num[i]] = 1; } } //方案三 int[] tempNum2 = new int[100]; for(int i=0;i<num.length;i++) { tempNum2[num[i]]++; if(tempNum2[num[i]] == 2) { System.out.println("通過方案三找出來的第一個數字爲:" + num[i]); break; } } } }
算法題2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.