[小米] 异形数

在一个长度为n的整形数组a里,除了三个数字只出现一次外,其他的数字都出现了2次。请写程序输出任意一个只出现一次的数字,程序时间和空间复杂度越小越好。 例如: a = {1,3,7,9,5,9,4,3,6,1,7},输出4或5或6。

解题思路

  • 如果只有一个只出现一次,将所有数做异或运算,返回其值。
  • 如果有两个数只出现一次,假设为a和b,全部数做异或运算的结果为x=a^b,由于a和b不相等,所以x不为0。从右向左扫描第一个为1的位,根据该为是否为1,将原数组分为两组,再对每组数据按情况一处理。
  • 对于有三个数只出现一次的情况,可以根据三个数两两异或,最低位有两个相同,有一个不同来求解。

实现代码

#include <iostream>
using namespace std;

int lowbit(int x);
int find(int *num, int len);

int main()
{
    int num[] = {1,1,2,2,3,3,4,4,5,6,7};
    cout<<find(num, sizeof(num)/sizeof(num[0]))<<endl;

    return 0;
}

//找出从右到左第一个出现1的位置
int lowbit(int x)
{
    return x & ~(x - 1);
}

int find(int *num, int len)
{
    int xors = 0;
    for (int i = 0; i < len; i++)
    {
        xors ^= num[i];
    }

    //三个数两两异或,最低位有两个相同,有一个不同
    int low = 0;
    for (int i = 0; i < len; i++)
    {
        //表示的是low = lowbit(a^b) ^ lowbit(a^c) ^ lowbit(b^c)
        low ^= lowbit(xors ^ num[i]);
    }

    int result = 0;
    for (int i = 0; i < len; i++)
    {
        if (lowbit(xors ^ num[i]) == low)
        {
            result ^= num[i];
        }
    }

    return result;
}
时间: 2024-10-14 15:05:33

[小米] 异形数的相关文章

小米离上市还远吗?

魅族创始人黄章曾经说过,全中国会做手机的人只有他和周鸿祎,从目前360 OS和魅族早几代的手机产品来看,这话不假.华为和小米虽然销量上领先二者,但一个依托通讯巨头出身强调技术,另一个发力营销主打参与感,其他后起之秀如乐视等通过生态链方式别出创新,但这种新商业模式从目前来看仍然有待时间证明. 不同的商业模式决定着不同的归途.这些手机从业者中,小米的经营模式是最接近资本市场的一家,从目前小米在产品企业布局方面的动态来看,小米的下一步动作或许就是登录资本市场,摘取中国智能手机行业的巅峰桂冠. 只是在实

“多事之秋”的小米,该冷静下来思考了

进入微软.亚马逊,谷歌等美国IT企业工作人才项目,起薪40万,百度搜索(MUMCS) 刚刚4周岁的小米,陷入了一个多事之秋.移动电源爆炸事件,小米社区800万用户数据库泄露,小米备感焦灼.虽说小米已经用公关手段将两则移动电源爆炸事件摆平,可小米在公众面前的公信力已经严重缩水.小米对800万社区用户数据库泄露事件的不专业回复,更是将小米推到了舆论的风口浪尖. 在这样一个多事之秋,小米的发布会又要登场.如无意外,小米平板和小米4K电视,以及小米3S手机,三个产品一起发布将成为小米史上之最.4月底,小

黄章会卖掉魅族吗?

阿里魅族在一起了. 2月9日,阿里巴巴宣布5.9亿美元入股魅族科技.与此同时,海通开元基金也投资魅族 6千万美元.以此来计,魅族第此次战略引资共计 6.5亿美元. 媒体报道称"阿里巴巴和魅族双方将本着真诚合作.互惠共赢的原则,结成长期战略合作伙伴关系.阿里将在电商.互联网.移动互联网服务.智能手机系统方面.数据分析及支付等方面为魅族提供资源与支持,魅族将在智能手机系统的推广.针对硬件和用户在视觉和交互上的定制化.市场策略.线下销售渠道方面为阿里提供支持与帮助,从而延伸阿里巴巴的移动互联网优势.&

Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒

摘要 Android系统 小米,三星,索尼手机发送桌面快键提醒数字图标,在Android系统中,众所周知不支持BadgeNumber,虽然第三方控件BadgeView可以实现应用内的数字提醒,但对于系统的图标,特别是app的logo图标很难实现数字标志,即使是绘图的方式不断修改,但这种方式天生弊端,实用性很差. BadgeNumber ShortCutNumber miui samsung sony sendBadgeNumber logo/icon数字提醒 Android系统 小米,三星,索尼

[小米]2015小米校招之回文数判断

[题目] 大家对回文串不陌生吧?一个字符串从前看和从后看如果一样的话,就是回文串,比如"上海自来水来自海上"就是一个回文串.现在我们的问题来了,把一个数字看成字符串,问它是不是一个回文数?时间复杂度和空间复杂度越低的算法,得分越高. c++: bool isPalindromeNumber(long num); java: boolean isPalindromeNumber(long num); [代码] #include <iostream> using namespa

小米平板:天使与魔鬼的共同化身

笔者按:当某一个事物因为各种看似巧合的原因成功爆发,并迅速向周边延伸之时,往往会因崛起过快,根基不稳而造成种种缺憾,甚至会引来各种批判之声.诚然,初衷总是好的,但其中掺杂的过多功利因为总会带来负面影响. 如果说iPad在平板行业一骑绝尘的话,那Android平板似乎总是显得不那么给力.即使目前Android平板在硬件上与iPad相比毫不逊色,但在应用质量上却差之千里.更重要的是,市场上并没有一款让用户真正记住的明星Android平板.三星Galaxy Tab系列似乎总是离大众消费者的生活很远,谷

小米开源监控系统Open-Falcon安装使用笔记

前言 近期爆出Zabbix有严重bug,加上一直对zabbix的性能.UI不满.所以这次想钻研一下最近很火的open-falcon,源于小米公司的开源项目,赞一个. 一.官网介绍 监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题.监控系统作为一个成熟的运维产品,业界有很多开源的实现可供选择.当公司刚刚起步,业务规模较小,运维团队也刚刚建立的初期,选择一款开源的监控系统,是一个省时省力,效率最高的方案.之后,随着业务规模的持续快速

非小米Max独享 看你手机能否升级MIUI8?

在昨天举行的小米夏季新品发布会上,除了小米Max 之外小米还带来了全新的MIUI 8,此次MIUI 8在系统UI.动画交互.功能等层面进行了显著改善,特别推出了系统级分身术.伪基站诈骗短信识别等贴心功能,开发版将适配小米2/2S/3/4/4C /4S/5/Max以及红米/红米Note/小米Note全系列机型,基本上除了最古老的机型都能进行升级,对于用户来说是一大福音. 机友精灵www.jiyw.com 由于小米自小米手机M1以来已推出小米.红米两大系列,两系列又包含多条产品线,共更新迭代众多产品

今年数博会全面升级!BAT+TMD+ABC黑科技,你能看到谁?

一年一度的贵阳数博会又要来了!2017年5月26-29日,第三届贵阳数博会将在贵阳举办.然后重要的事情说三遍,今年的数博会规格全面升级了!升级了!升级了!今年数博会是首届中国国际大数据产业博览会,本届数博会的年度主题为"数字经济引领新增长". 2015年,数博会第一次举办的时候叫贵阳国际大数据产业博览会暨全球大数据时代贵阳峰会分,2016年第二次举办的时候叫中国大数据产业峰会暨中国电子商务创新发展峰会,2017年正式升级为中国国际大数据产业博览会,这意味着2017年数博会正式升级为国家