小米2013校園招聘筆試題_JAVA版本

題目:一個數組裏,除了三個數是唯一出現的,其餘的都出現偶數個,找出這三個數中的任一個。比如數組元素爲【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, 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,


謝謝觀看。。

原創哦。。。


發佈了8 篇原創文章 · 獲贊 6 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章