題目:一個數組裏,除了三個數是唯一出現的,其餘的都出現偶數個,找出這三個數中的任一個。比如數組元素爲【1, 2,4,5,6,4,2】,只有1,5,6這三個數字是唯一出現的,我們只需要輸出1,5,6中的一個就行。
CSDN別人博客看得的
那位先生用的C寫的,好吧,我不會C。
感興趣可以看下。
地址:前輩的C版本
然後,我想了下用JAVA 寫。
思路還算清晰。
幾分鐘就想出來。
七點半開始寫,直到現在才成功。。。三個多小時。。
半個小時寫完代碼,寫完大體,編譯報錯50多個。。。
當時想哭啊。。
然後修改,不下10次,纔算編譯過去,
運行結果和預料的不一樣,
在修改,又是N次,最後原因是最後的if語句,偷懶沒加{},多謝了:導致的。。。教訓
思路是:
1:創建一個新數組,用來記錄要選擇的數組每個元素出現的次數,
這裏藉助一個計數器,
特別注意計數器計數完畢需要歸零,開始沒注意,總是失敗。。。
2:然後 選擇性輸出,出現次數爲一次或者多次的元素。
不知道有沒有說清楚。。
運行結果:單次出現的元素是1,5,6,
CSDN別人博客看得的
那位先生用的C寫的,好吧,我不會C。
感興趣可以看下。
地址:前輩的C版本
然後,我想了下用JAVA 寫。
思路還算清晰。
幾分鐘就想出來。
七點半開始寫,直到現在才成功。。。三個多小時。。
半個小時寫完代碼,寫完大體,編譯報錯50多個。。。
當時想哭啊。。
然後修改,不下10次,纔算編譯過去,
運行結果和預料的不一樣,
在修改,又是N次,最後原因是最後的if語句,偷懶沒加{},多謝了:導致的。。。教訓
思路是:
1:創建一個新數組,用來記錄要選擇的數組每個元素出現的次數,
這裏藉助一個計數器,
特別注意計數器計數完畢需要歸零,開始沒注意,總是失敗。。。
2:然後 選擇性輸出,出現次數爲一次或者多次的元素。
不知道有沒有說清楚。。
如圖:
代碼附上。。。
其他高手有其他算法可以交流。。。
/*
題目:一個數組裏,除了三個數是唯一出現的,其餘的都出現偶數個,
找出這三個數中的任一個。比如數組元素爲【1, 2,4,5,6,4,2】,
只有1,5,6這三個數字是唯一出現的,
我們只需要輸出1,5,6中的一個就行。
*/
class screen{
public void get(int[] arr)
{
//定義兩個數組用來存儲和記錄 copy[] 用來複制一遍輸入數組 record[] 用來存儲數組相同元素出現次數
//counter 用來記錄出現次數
int counter=0;
int record[] = new int[arr.length];
//遍歷數組元素
for (int x=0;x<arr.length;x++)
{
for (int y=0;y<arr.length;y++)
{
if(arr[x]==arr[y])//比較是否相同,本來還有選擇性不和自身比較,最後比較懶,沒寫。。。
{
counter++;
}
}
record[x]=counter; //用數組記錄下元素出現次數
counter=0;//計數器歸零,很重要
}
System.out.println();
//找到出現多次的元素
//遍歷數組
//查看下定義的數組是否記錄準確
//System.out.print("record.lenth="+record.length) ;
/*for (int x=0;x<arr.length;x++)
{
System.out.print("record ["+x+"]="+record [x]+",");
System.out.println();
}*/
System.out.println();
System.out.print("單次出現的元素是");
for (int x=0;x<arr.length;x++)
{
if(record[x]==1)
{
System.out.print(arr[x]+",");
}
}
}
}
public class screenText
{
public static void main(String[] args)
{
int arr[]={1, 2,4,5,6,4,2};
screen sc=new screen();
sc.get (arr);
}
}
運行結果:單次出現的元素是1,5,6,
謝謝觀看。。
原創哦。。。