[小米] 异形数

2024-06-05 08:48
文章标签 小米 异形

本文主要是介绍[小米] 异形数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在一个长度为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;
}

这篇关于[小米] 异形数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1032623

相关文章

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

安卓玩机工具------小米工具箱扩展工具 小米机型功能拓展

小米工具箱扩展版                     小米工具箱扩展版 iO_Box_Mi_Ext是由@晨钟酱开发的一款适用于小米(MIUI)、多亲(2、2Pro)、多看(多看电纸书)的多功能工具箱。该工具所有功能均可以免root实现,使用前,请打开开发者选项中的“USB调试”  功能特点 【小米工具箱】 1:冻结MIUI全家桶,隐藏状态栏图标,修改下拉通知栏图块数量;冻结

大厂面试:小米嵌入式面试题大全及参考答案(130+道 12万长文)

Flink 架构介绍 Flink 是一个分布式流处理和批处理框架,具有高吞吐、低延迟、高可靠等特点。其架构主要由以下几个部分组成: 客户端(Client):负责将作业提交到集群,并与作业管理器进行交互,获取作业的状态信息。客户端可以是命令行工具、IDE 插件或者自定义的应用程序。作业管理器(JobManager):负责接收客户端提交的作业,协调资源分配,调度任务执行,并监控作业的执

小米9 从后台回到前台后 Dialog不显示 只有半透明的背景

最近用自定义Dialog 展示一些提示语,用小米测试时发现在弹出DialogAPP恰好在后台时,再次打开APP,界面上没有 DIalog 的弹框,但是有半透明的背景,点击返回也关不掉,只有关闭页面才会恢复正常,这个情况暂时只在小米上出现,最后找到了问题记录一下。 自定义Dialog原代码有一段是这样 dialog.getWindow().setGravity(Gravity.CENTER

手机玩机常识-----小米系列机型 Android 15 更新计划 那些机型将会更新安卓15

小米机型是很多米粉最喜欢把玩的,其中解锁bl root 刷写twrp以及刷第三方系统资源相对其他品牌机型来说比较丰富。目前安卓15快要更新到很多机型。我们来了解下小米系列机型的更新计划是咋样的 小米会定期更新有关 Redmi红米 设备的支持日期的数据,包括可用的 Android 版本。稳定版以及开发版系统。 目前官方已经公布了哪些红米手机将获得Andro

关于小米手机USB传输稍大点的文件老中断的问题解决方法!

关于小米手机USB传输稍大点的文件老中断的问题解决方法! 这是一个很痛苦的事情,当你传输大文件的时候,传输到一半就会莫名其妙的中断,拔插数据线很多次以后,好不容易没准可以成功传输一次。 后来使用了360的手机助手,从调试模式传输文件,虽然不会中断,但是慢的要死。 最后我看到手机插上后手机提示 有3种模式:仅限充电 传输文件(MTP) 传输照片(PTP)。当然我们选择传输文件是没戏了,会中

flutter 小米推送插件使用注意

最近接入推送后 可以接受 但是MiPushReceiver  里面的方法一直走不进去 最后发现 权限存放xml位置不对 <permissionandroid:name="com.wjapi.micro.micro_flutter_mipush_example.permission.MIPUSH_RECEIVE"android:protectionLevel="signature" /><us

2015年1月26日 格力PK小米

黑格尔的名言:世界上最悲剧的冲突,双方不存在对与错,只是两个都有充分理由的片面 郎教授说: 小米的雷军和格力的董明珠打赌10年后谁的销售额大,输了陪10亿 2013年小米销售额为格力的1/4,而2014年小米则是格力的1/2 2014年智能手机占有率小米14% 小米占全世界份额5.3% 雷军的三板斧 1.硬件组装都是最好的,高通的硬件,HP的屏

小米3高通版为何推迟上市:供应链之伤

雷军终于赶在2013年的最后一天宣布小米3高通版上市,而此时距9月5日的发布会已隔近4个月之久。     这其中究竟发生了什么?笔者在一个月时间内陆续采访了高通大中华区总裁王翔、联发科董事长蔡明介、多家国产手机大佬、手机方案商、以及小米内部员工,信息整理如下:     小米3高通版为何推迟近4个月?     在目前智能手机市场,一款旗舰产品的销售生命周期只有9-12个月,而国内品牌更短

《路由器开发 - 路由器刷机指南》小米MINI刷机

在网上找了官改固件、breed和路由器固件进行刷机。 官改固件:miwifi_r1cm_firmware_2e9b9_2.21.109.bin 路由器配置: CPU MT7620A 内存 128M DDR2 ROM 16M 2口LAN 1口WAN 1USB2.0 双天线 300M 图1 好了,开始折腾吧。 1原版系统使用 首先要插入外网到WAN口,再插入一根网线到LAN