标签:
leetcode - Single Number
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
class Solution { public: int singleNumber(vector<int>& nums) { int res = 0; for(int i = 0; i < nums.size(); i++){ res ^= nums[i]; } return res; } };
普通的解法无需再提,这里需要线性复杂度,不使用额外内存的解法:
利用异或运算的性质:
a^b = b^a
a^a = 0
0^a = a
显然,将所有数字异或之后,出现两次的数字都变成了0,只剩下出现一次的数字。
标签:
原文地址:http://www.cnblogs.com/shnj/p/4739392.html