1. 程式人生 > >只出現一次的數字_LeetCode

只出現一次的數字_LeetCode

package day02;

/**
 * 
給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。

說明:

你的演算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎?
 * @author JZWen
 * 
 * 
 * 思路: 什麼是線性時間複雜度,不使用額外的空間,定義一個變數算不算?
 * 
 * 線性複雜度: o(n) 
 * 
 * csdn上看到了一種特別好的演算法,就是用異或處理。 其餘元素之出現兩次(偶數次) 找出那個出現一次(奇數次)
 * 
 *
 */

public class Demo01 {
	
	public static int fun(int nums[]) {
		int num = 0;
		for(int i=0; i<nums.length; i++) {
			num ^= nums[i];
		}
		return num;
	}
	

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int nums[]= {4,1,2,1,2};
		System.out.println(fun(nums));
	}

}

 

 

注意這個應用的場景和方法,有很多限制條件的。

 

自己需要思考一下 ,如果重複的資料不是偶數個怎麼辦?