leetcode 136 137 Single Number

题目描述(面试常考题)

借助了异或的思想

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
原文地址:https://www.cnblogs.com/strongYaYa/p/6777748.html