美文网首页
剑指 Offer 第56-1题:数组中数字出现的次数

剑指 Offer 第56-1题:数组中数字出现的次数

作者: 放开那个BUG | 来源:发表于2022-08-14 13:48 被阅读0次

1、前言

题目描述

2、思路

这道题使用异或的思路,任何数与0异或是这个数本身,异或还满足交换律。但是这里有两个不同的数,那么就将这个数组拆成两个子数组分别异或即可。

3、代码

class Solution {
    public int[] singleNumbers(int[] nums) {
        int x = 0, y = 0, n = 0, m = 1;
        for(int num : nums){
            n ^= num;
        }

        while((n & m) == 0){
            m <<= 1;
        }

        for(int num : nums){
            if((num & m) != 0){
                x ^= num;
            }else {
                y ^= num;
            }
        }

        return new  int[]{x, y};
    }
}

相关文章

网友评论

      本文标题:剑指 Offer 第56-1题:数组中数字出现的次数

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