N次里面找1次的通用解法,N为偶数直接异或

single-number-ii

http://www.nowcoder.com/questionTerminal/1097ca585245418ea2efd0e8b4d9eb7a

class Solution {
public:
    int singleNumber(int* A, int n) {
        if (!A || n == 0) return 0;
        int result = 0;
        int N = 3;
        if (N & 1)
        {
            for (int i = 0; i < 32; ++i)
            {
                int bit = 0;
                for (int j = 0; j < n; ++j)
                {
                    bit += (A[j] >> i) & 1;
                }
                result += (bit % N) << i;
            }
        }
        else
        {
            for (int i = 0; i < n; ++i)
            {
                result ^= A[i];
            }
        }
        return result;
    }
};
全部评论
太赞啦!!!
点赞
送花
回复
分享
发布于 2020-09-06 19:44
妙啊
点赞
送花
回复
分享
发布于 2021-04-13 10:33
滴滴
校招火热招聘中
官网直投
思路很赞!!可以去除if-else。for循环中已经同时包含奇偶情况了。
点赞
送花
回复
分享
发布于 2021-12-14 09:10

相关推荐

点赞 评论 收藏
转发
4 收藏 评论
分享
牛客网
牛客企业服务