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;
    }
};
全部评论
思路很赞!!可以去除if-else。for循环中已经同时包含奇偶情况了。
点赞 回复 分享
发布于 2021-12-14 09:10
妙啊
点赞 回复 分享
发布于 2021-04-13 10:33
太赞啦!!!
点赞 回复 分享
发布于 2020-09-06 19:44

相关推荐

看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗?&nbsp;那对老老实实面试的人岂不是不公平....
程序员牛肉:公平那是对小孩子讲的童话故事,成年人的世界只有能不能接受失败的后果。 你要是能接受面试作弊被发现之后多家公司联合永久拉黑的后果,你就搞。
点赞 评论 收藏
分享
05-30 12:03
山西大学 C++
offer来了我跪着...:不是骗子,等到测评那一步就知道为啥这么高工资了
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务