剑指 Offer 56

在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。

示例 1:

输入:nums = [3,4,3,3]
输出:4
示例 2:

输入:nums = [9,1,7,9,7,9,7]
输出:1
 

限制:

1 <= nums.length <= 10000
1 <= nums[i] < 2^31

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shu-zu-zhong-shu-zi-chu-xian-de-ci-shu-ii-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

计算每个位出现次数不能被三整除的,那么答案这一位是1.

代码:

class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int ans = 0,d = 1;
        for(int i = 0;i < 31;i ++,d <<= 1) {
            int c = 0;
            for(int num:nums) {
                if(num & d) c ++;
            }
            if(c % 3) ans |= d;
        }
        return ans;
    }
};
如果觉得有帮助,点个推荐啦~
原文地址:https://www.cnblogs.com/8023spz/p/13740373.html