确定只出现曾有两位数字数组

确定只出现曾有两位数字数组

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

称号:除了外面两个数字为整数数组。其他人物都出现两次。

请敲代码,找了两个数字只出现一次。它需要的时间复杂度O(n),空间复杂度是O(1)。

或深足够的认识。
要思路还是之前的数组中仅仅出现一次的数字的那种模式,一次遍历加上异或运算。那么这个异或的值肯定是这两个仅仅出现一次的数字的相异或的值。那么这个值的二进制表现形式中的1的结果就表示这两个数字在该bit位上不一样。那么通过此举,我们能够以这个bit位是否为1来从整个数组中把这两个仅仅出现一次的数字分开。

通过此举。别的出现两次的数字一会被分到同一组,那么结果就是有两组数据。每组都是奇数个数字。都有仅仅出现一次的数字。

#include<stdio.h>
#include<assert.h>
int findOutTwo(int *a,int n,int &x,int &y){
    assert(a);
    assert(n>2);
    int result=a[0];
    for(int i=1;i<n;++i)
        result^=a[i];
    int b=result&-result;
    x=0;
    y=0;
    for(int i=0;i<n;++i)
    {
        if(b&a[i])
            x^=a[i];
        else
            y^=a[i];
    }
    return 0;
}
int main()
{
    int a[]={1,1,2,2,3,3,4,4,5,6};
    int x,y;
    findOutTwo(a,sizeof(a)/sizeof(int),x,y);
    printf("%d %d\n",x,y);
    getchar();
    return 0;
}

结果为:
这里写图片描写叙述

版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/117464.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • vue+axios上传文件的几种方式及步骤(以上传图片为例)

    vue+axios上传文件的几种方式及步骤(以上传图片为例)1、用js的formData对象上传(服务器返回url地址)<inputclass=”file”name=”file”type=”file”accept=”image/png,image/gif,image/jpeg”@change=”update”/>methods:{update(e){letfile=e.targe…

  • R语言-提取字符长度nchar函数与length函数「建议收藏」

    R语言-提取字符长度nchar函数与length函数「建议收藏」R语言中nchar函数:主要使用来返回字符长度而length函数:则是用来返回字符数量#Gettingthelengthofastringx=”John”y=c(“Jim”,”Tony”,”kavry”)nchar(x)#returnthenumberofcharactersinthestringnchar(y)#ifavector,return

  • Sublime Text 3安装及常用插件安装

    Sublime Text 3安装及常用插件安装欢迎访问我的个人博客http://xiaolongwu.cn/一、Sublime3下载1.百度搜索Sublime3download,选择进入下载页面2.我选择下载Win64位安装程序二、Sublime3安装傻瓜式安装,一直点下一步即可。三、Sublime3插件配置1.直接安装安装Sublimetext3插件很方便,可以直接下载安装…

  • Python语言有哪些数据类型「建议收藏」

    Python语言有哪些数据类型「建议收藏」在Python中,能够直接处理的数据类型有以下几种:一、整数Python可以处理任意大小的整数,当然包括负整数,在Python程序中,整数的表示方法和数学上的写法一模一样,例如:1,…

  • I2C电平转换电路_双向电平转换电路工作原理

    I2C电平转换电路_双向电平转换电路工作原理本文分享下I2C双向电平转换电路的设计原理,以及需要注意的事项。在I2C主从设备对接时,需要考虑主从设备的电平情况,常规的主要有3种:5V,3.3V,1.8V。如果电平相同,比如都是3.3V,那么可以直接对接。如果电平不同,一个高电平是3.3V,另外一个是1.8V,那么就需要接入其它的器件来做一下电平转换,通常是接入NMOS管。如上图,此图来源于I2C官方协议,协议标准文件里…

  • linux history|grep 操作

    linux history|grep 操作linux下查询之前用过的命令。history|grepamasshistory|greplshistory|grep“ls-a”

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号