题解 | #数组中只出现一次的数(其它数出现k次)#

数组中只出现一次的数(其它数出现k次)

http://www.nowcoder.com/practice/5d3d74c3bf7f4e368e03096bb8857871

如果k个相同的k进制数进行无进位相加,相加的结果一定是每一位上都是0的k进制数。

所有的数都是32位整型,讲所有数都转为二进制数,计算所有数在32位每一位的和。如果该位可以被k整除,则表示那个只出现一次的数在该位为0;如果该位整除不为0, 则表示那个只出现一次的数在该位为1。

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param arr intvector 
     * @param k int 
     * @return int
     */
    int foundOnceNumber(vector<int>& arr, int k) {
        // write code here
        int res = 0;
        for(int i = 0; i < 32; i++){
            int sum = 0;
            for(auto num: arr){
                sum += num >> i & 1;
            }
            if(sum % k != 0){
                res += 1<<i;
            }
        }
        return res;
    }
};
全部评论

相关推荐

03-30 21:02
已编辑
武汉大学 Java
ALEX_BLX:虽然说聊天记录不可信,不过这个趋势确实如此但我觉得也要想到一点就是卷后端的人里真正有“料”的人又有多少,我说的这个料都不是说一定要到大佬那种级别,而是就一个正常的水平。即使是现在也有很多人是跟风转码的,2-3个月速成后端技术栈的人数不胜数,但今时不同往日没可能靠速成进大厂了。这种情况就跟考研一样,你能上考场就已经打败一半的人了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务