题目描述(面试常考题)
借助了异或的思想
class Solution { public: int singleNumber(vector<int>& nums) { int ret = 0; for(int i = 0 ; i < nums.size() ; i++) ret = ret ^ nums[i]; return ret;
/* 出现3次的情况借助了位运算的思想,相同的数 则 在int型的各32位都相等,所以32位中各位求和取余就可以得到结果 */ class Solution { public: int singleNumber(vector<int>& nums) { int tmp[32]= {0}; int result = 0; for(int i = 0; i<32; i++){ for(int j =0; j < nums.size(); j++){ tmp[i] += ((nums[j] >> i) & 1); } tmp[i] %= 3; result |= (tmp[i] << i); } return result