`
十三月的
  • 浏览: 168724 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

从各个角度扯谈一面试算法题

 
阅读更多

 

    题目一个Int型数组,存放的数据中有个重复的次数是奇数次,其他的重复的次数全是偶数次。

    要求:找出这两个数据,时间复杂度是O(n) 空间复杂度是O(1)

 

名词简单解释

     时间复杂度是O(n)案例:遍历一个长度为n的数组,时间复杂度是O(n) 如果在for循环里嵌套一个长度为n的循环那么时间复杂度是O(n2).如果两个for循环有先后顺序,无嵌套关系,时间复杂度还是O(n).

      空间复杂度是O(n)案例:创建一个长度为n的数组占用的空间是与n成正比的,空间复杂度是O(n).

 

解决办法

(1)假设数据是:554433444444223355552222

(2)第一步:将数据依次进行异或运算,即:5544异或运算得到aa再与33异或运算得到b,一直到最后得到一个数值为x.  

   

     步骤详解:

     1>“异或”规则:相同为0 不同为1  例如1001异或1010等于0011

     2> 进行异或运算以后,所有的出现偶数次的数,变成了0,相当于被剔除,出现奇数次的55中有255异或得到0322中有2个异或得到0,最后相当于5522进行异或运算,得到x可以肯定的是x不为0

 

(3)第二步:假设x的右边的第一位为1(其他位上为1同样可以使用该位),写一个方法假设是public boolean isOne(int value,int num){},用途是判断输入的value在第num位是否为1,返回Boolean结果。将x与原始数据再次进行异或运算。不过要加上isOne方法进行判断,结果是x分别与在第一位上是1的数据异或得到a,第一位上是0的数据异或得到bab就是要求的两个数。

     步骤详解:

     isOne()方法将数据分为两种即第一位上为0的和第一位上是1的,可以肯定的是要求 的数据ab一定是不同的两种类型。那么就像是第一步中一样所有的出现偶数次的全部消去,结果是x22异或得到结果是55,x55异或得到结果是22

 

一些想法

变形1:一个Int型数组,存放的数据中有个重复的次数是偶数次,其他的重复的次数全是奇数次。(奇数和偶数变换顺序)

变形2:一个Int型数组,存放的数据中有3个重复的次数是奇数次,其他的重复的次数全是偶数次。(2个变为3个)

 

变形1:仔细分析的话结果是行不通的,对于第一个的想法可以变成不是异或运算而是同或运算,但是第一步就将要求的两个数ab剔除了。所以第一步就做不到得到一个上一种的一个肯定不为0x。就别提第二步了。

变形2:第一步可以实行,得到一个a,bc 三个数异或。但是不能确定这个结果肯定为0或不为0,事情变得不好处理。可以分类讨论。(此处不做分析)

 

再看本题该方法的妙处

依据:

第一步利用数据ab相同之处是两者出现的次数是偶数,此条件可以将所有的数据分为两派,此时ab属于同一方。

第二步利用数据ab不同之处是两者至少存在一位不同,此条件可以将所有的数据分为两派,此时ab属于不同方。

关键方法巧用异或,解决了关于奇次和偶次的问题。

 

      不论是奇还是偶,还是“两”个数。其实都是表示了01世界中的两种可能,代表的是中逻辑,无关数量。知己知彼才能各个突破

 

 

0
0
分享到:
评论

相关推荐

    程序员该如何打败拖延症

    它不是那些老套陈旧的动机心理学扯谈。 我并不是说那些传统的应对拖延症的方法理论不对,只是对我无效。当正经历极度消沉的时候,我通常听到的理论的最后一句话是”You just DO IT!”。我有很多的事情要去做。但我...

    javascript原型模式用法实例详解

    原型模式i的定义:每个函数都有一个prototype(原型)属性,这个属性是一个对象,它的用途是包含可以由特定类型的所有实例共享的属性和方法。比如在构造函数模型中sayInformation()方法,如果声明两个实例就要构造两次...

    Python项目-自动办公-59 PPT_pptx_在PPT中写入图片和表格.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

    Python项目-实例-20 快递查询.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

    杂货产品检测43-YOLO(v5至v9)、CreateML、Paligemma、TFRecord、VOC数据集合集.rar

    杂货产品检测43-YOLO(v5至v9)、CreateML、Paligemma、TFRecord、VOC数据集合集.rarIPCV分配-V6 2024-01-21 6:10 PM ============================= *与您的团队在计算机视觉项目上合作 *收集和组织图像 *了解和搜索非结构化图像数据 *注释,创建数据集 *导出,训练和部署计算机视觉模型 *使用主动学习随着时间的推移改善数据集 对于最先进的计算机视觉培训笔记本,您可以与此数据集一起使用 该数据集包括7012张图像。 家庭废物以createMl格式注释。 将以下预处理应用于每个图像: *像素数据的自动取向(带有Exif-Arientation剥离) *调整大小为640x640(拉伸) 没有应用图像增强技术。

    绝对给力的源码,在线音乐播放器完整项目.zip

    Android 毕业设计,Android 毕业设计,小Android 程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

    毕业设计-0-1背包问题动态规划模型Python代码.rar

    1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、本项目仅用作交流学习参考,请切勿用于商业用途。

    保质量的周期边界2dAllen-Cahn方程求解器:纯隐格式迭代解

    谁喜欢谁下载,没啥商业价值,comsol也能做,不过我这产量更大

    Python项目-游戏源码-10 植物大战僵尸.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

    实现获取视频的缩略图(ThumbnailUtils),并且播放.zip

    Android 毕业设计,Android 毕业设计,小Android 程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

    推箱子Python小游戏

    推箱子Python小游戏

    基于ssm的新媒体视域下的中国古诗词展演源代码(java+vue+mysql+说明文档+LW).zip

    该新媒体视域下的中国古诗词展演主要为管理员和用户两类用户角色提供需求,管理员在后台可以对系统进行全面管理,用户在前台可以进行查看系统信息,注册登录,查询校园失物,评论,下载校园失物等操作。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7

    Matlab实现PSO-BiLSTM-Attention粒子群算法优化双向长短期记忆神经网络融合注意力机制多特征分类预测(含完整的程序,GUI设计和代码详解)

    内容概要:本文介绍了使用MATLAB实现PSO-BiLSTM-Attention粒子群优化双向长短期记忆神经网络融合注意力机制的多特征分类预测模型。通过PSO优化BiLSTM模型的超参数、引入注意力机制增强模型的特征提取能力,提升了多维度数据的分类精度。模型在金融风险预测、医疗健康预测、交通流量预测等多个领域具有广泛的应用前景。项目详细描述了模型架构、代码实现、训练与优化、模型评估与可视化、以及GUI界面设计等方面的内容。 适合人群:具备一定编程基础,工作1-3年的数据科学家和机器学习工程师。 使用场景及目标:① 金融、医疗、交通等领域的多特征分类预测任务;② 结合PSO优化BiLSTM超参数、引入注意力机制,提升模型预测准确度。 阅读建议:本文详细讲解了模型的理论背景、算法实现和应用案例,适合希望深入理解深度学习和优化算法的读者。建议结合代码和实际数据进行实验,以便更好地掌握模型的设计和优化过程。

    Java项目-基于SSM的物资管理系统项目源码.zip

    Java项目-基于SSM的物资管理系统项目源码

    Video_2024-12-18_000023.wmv

    Video_2024-12-18_000023.wmv

    Python项目-自动办公-26 Python从原Excel表中抽出数据存入同一文件的新的Sheet.zip

    Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。

    基于ssm的家居商城系统的设计与实现+jsp源代码(完整前后端+mysql+说明文档+LW).zip

    系统实现: 用户功能模块:用户点击进入到系统操作界面,可以对主页、个人中心、我的收藏管理、订单管理等功能模块,我的收藏管理:通过列表可以获取用户ID、收藏ID、表名、收藏名称、收藏图片信息并进行修改操作 管理员功能模块:管理员通过用户名和密码填写完成后进行登录。管理员登录成功后进入到系统操作界面,可以对主页、个人中心、用户管理、商品分类管理、商品信息管理、系统管理、订单管理等功能模块进行相对应操作。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7

    STM32F103单片机采集温湿度及SPI FLASH数据保存并通过BC260-NBIOT模块上传数据到华为云物联网平台代码

    1、嵌入式物联网单片机项目开发实战。例程经过精心编写,简单好用。 2、代码使用KEIL 标准库开发,当前在STM32F103运行,如果是STM32F103其他型号芯片,依然适用,请自行更改KEIL芯片型号以及FLASH容量即可。 3、软件下载时,请注意keil选择项是jlink还是stlink。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。

Global site tag (gtag.js) - Google Analytics