美文网首页
Leetcode #260. Single Number III

Leetcode #260. Single Number III

作者: 尴尴尬尬先生 | 来源:发表于2017-06-30 10:55 被阅读0次
    public class Solution {
        public int[] singleNumber(int[] nums) {
            int sum = 0,i=0;
            int[] res = new int[2];
            for(int num:nums)
                sum^=num;
            sum&=-sum;  //获取到sum中最后一位二进制为1的位子,考虑到负数
                   /*不能用这种方式,因为要考虑到负数
                    for(i=0;i<32;i++){
                      if((sum>>i&1)==1)
                        break;
                   }*/
                  
            for(int num:nums){
                if((num&sum)==0){
                    res[0]^=num;
                }
                else{
                    res[1]^=num;
                }
            }
            return res;
        }
    }
    

    参考链接
    leetcode 137

    public class Solution {
        public int singleNumber(int[] nums) {
            int res = 0;
            int[] temp = new int[32];
            for(int i=0;i<32;i++){
                for(int num:nums){
                    int x = num>>i&1;
                    temp[i]+=x;
                }
                res|=temp[i]%3<<i;
            }
            return res;
        }
    }
    

    寻找数组中只出现一次的数字,其他数字出现三次。
    寻找每一个二进制位中,出现次数不为3的值。

    相关文章

      网友评论

          本文标题:Leetcode #260. Single Number III

          本文链接:https://www.haomeiwen.com/subject/gbubcxtx.html