1. 程式人生 > >【leetcode】136.只出現一次的數字 c++實現

【leetcode】136.只出現一次的數字 c++實現

【leetcode】136.只出現一次的數字 c++實現

  1. 題目

給定一個非空整數陣列,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。
例1:
輸入: [2,2,1]
輸出: 1

例2
輸入: [4,1,2,1,2]
輸出: 4

2 解題思路 實在沒想到可以這麼做哎

  1. 解題思路:

異或!!
^按位與 兩數相同為0,不同為1
一個數與自己異或會變成0 任何數和0異或不變
異或滿足結合律 如 5^2 ^3 ^2 = 2 ^ 2 ^ 5 ^3

所以,將所有數字異或,如果一個數字出現兩次相當於沒有出現,
最後剩下的數就是隻出現一次的數字

  1. 程式碼
class Solution {
public :
	int singleNumber(vector<int>& nums) {
		int c = 0;
		for (int i = 0; i < nums.size(); i++)
		{
			c = c ^ nums[i];
		}
			return c;
	}
};