我是靠谱客的博主 斯文冬日,最近开发中收集的这篇文章主要介绍一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

要求:一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。
在这里插入图片描述

class Solution {
    public int[] singleNumbers(int[] nums) {
  int sum=0;
            for ( int num:nums) {
                sum^=num;//得到异或结果,即为不相同两个数的异或结果sum
            }
            int flag=sum&(-sum);
            int r[]=new int[2];
            for (int s:nums) {
                if ((s&flag)==0){//分成两个组进行异或,每组异或后的结果就是不相同两个数的其中之一
                    r[0]^=s;
                }else {
                    r[1]^=s;
                }
            }
            return r;
    }
}

最后

以上就是斯文冬日为你收集整理的一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。的全部内容,希望文章能够帮你解决一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部