【ShareCode】不错的技术文章 -- 如何使用异或(XOR)运算找到数组中缺失的数?

如何使用异或(XOR)运算找到数组中缺失的数?

今天给大家分享一篇关于使用XOR(异或)运算找到数组中缺失的数的问题。

在一次Javascript面试中,有这么一个问题:

假设有一个由0到99(包含99)的整数组成的长度为100的数组。从数组中随机移除一个元素,得到了一个长度为99的数组,那么请问如何找到所取出的数字是几?(假设数组未排序)。

大多数面试者都是按照如下方法解答的:

首先对数组进行排序,然后遍历一遍数组,检查数组中相邻两项的的差,如果差大于1,则找到缺失的数字。

这是一种有效的算法。但是由于涉及排序,会消耗额外的计算成本。所以问题在于如何在只遍历一遍数组的情况下找到缺失的数。

第一种解法

计算剩余99个整数的和,以及0-99所有整数的总和,就可以用0-99之间所有整数的总和减去数组中剩余数的和来得到缺少的数。

第二种解法

通过对所有整数[0..99]的进行XOR,然后将得到的结果对剩余数组中所有项的进行异或。

更多详细内容可以查看原文。今天的文章就分享到这啦。

原文地址:https://www.cnblogs.com/jkol/p/10116856.html

时间: 2024-11-04 04:14:07

【ShareCode】不错的技术文章 -- 如何使用异或(XOR)运算找到数组中缺失的数?的相关文章

[Swift]LeetCode421. 数组中两个数的最大异或值 | Maximum XOR of Two Numbers in an Array

Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231. Find the maximum result of ai XOR aj, where 0 ≤ i, j < n. Could you do this in O(n) runtime? Example: Input: [3, 10, 5, 25, 2, 8] Output: 28 Explanation: The maximum resul

技术文章写作及运营的技巧:分析篇 | 什么样的文章受欢迎?

对于以技术为核心的技术博客来说,人们是冲着他们需要的内容去的,绝大多数情况下都不是在闲逛.如果你的网站里没有他想要的东西的话,他便会离开,人们是出于目的去搜索,基于动机,而不是无聊的在闲逛.无聊的话,他们更多的会去刷刷朋友圈的,看看鸡汤. 文章的类型 依据我的经验,我将技术博客分为下面几种类型: 文章类型 频率 时间 技术细节型 几次/天 15~30分钟 干货型 几次/月 1~2小时 实践总结型 几次/ 周 2+小时 杂谈与鸡汤型 几次/季度 1 + 小时 ~ 几个月 并且他们的流量来源大概来源

技术文章的阅读姿势

阅读技术文章可以说是我们程序员的日常之一,Peak 君每天也会进行定量的阅读.特写一篇小文分享下心得,介绍下过去几年,在纠正阅读习惯上所做的一些努力和取得的成果,或许可以帮助一些朋友,节省少许阅读时间,提升一点学习效率. 差不多两年前,我开始搭建 Android 相关的知识体系.最开始的想法是从基础知识的积累开始,正好这几年社区的技术分享盛行,「掘金」.「开发者头条」.「简书」等渠道上每天都有大量的新文章发布,文章主题五花八门,内容深浅不一,看上去都很不错.可坚持读了几天之后,深感自己踏进了错误

技术文章首选官方重精读不泛读,求阅读质量而非数量---转自peak

阅读技术文章可以说是我们程序员的日常之一,Peak 君每天也会进行定量的阅读.特写一篇小文分享下心得,介绍下过去几年,在纠正阅读习惯上所做的一些努力和取得的成果,或许可以帮助一些朋友,节省少许阅读时间,提升一点学习效率. 差不多两年前,我开始搭建 Android 相关的知识体系.最开始的想法是从基础知识的积累开始,正好这几年社区的技术分享盛行,「掘金」.「开发者头条」.「简书」等渠道上每天都有大量的新文章发布,文章主题五花八门,内容深浅不一,看上去都很不错.可坚持读了几天之后,深感自己踏进了错误

《鸡啄米C++编程入门系列》系列技术文章整理收藏

<鸡啄米C++编程入门系列>系列技术文章整理收藏 收藏整理鸡啄米C++编程入门系列文章,供个人和网友学习C++时参考 1鸡啄米:C++编程入门系列之前言 2鸡啄米:C++编程入门系列之一(进制数) 3鸡啄米:C++编程入门系列之二(原码.反码与补码) 4鸡啄米:C++编程入门系列之三(VS2010的使用介绍) 5鸡啄米:C++编程入门系列之四(数据类型) 6鸡啄米:C++编程入门系列之五(运算符和表达式) 7鸡啄米:C++编程入门系列之六(算法的基本控制结构之选择结构) 8鸡啄米:C++编程入

爬取知名社区技术文章_分析_1

软件运行环境是什么? python 3.50                                      -- 解释器 scrapy库                                         -- 爬虫框架 pymsql库                                         -- 连接mysql数据库 pillow库                                           -- 下载图片 目标网站是什么

技术文章汇总

点击以下链接,可以查看相关技术文章: 包括APP软件开发.手机软件开发.嵌入式开发.Java和C/C++编程,同时涉及原型设计.效果图设计.切图.网络.多媒体.加密.字符编码.通信原理.测试和项目管理等各方面的知识. APP开发实战 手机开发实战技术文章汇总

学习Hadoop不错的系列文章

1)Hadoop学习总结 (1)HDFS简介 (2)HDFS读写过程解析 (3)Map-Reduce入门 (4)Map-Reduce的过程解析 (5)Hadoop的运行痕迹 (6)Apache Hadoop 版本 2)Hadoop-0.20.0源代码分析 (1)Hadoop-0.20.0源代码分析(01) 地址:http://blog.csdn.net/shirdrn/article/details/4569702 (2)Hadoop-0.20.0源代码分析(02) 地址:http://blog

2017上半年技术文章集合【Android】—184篇文章分类汇总

地址: http://blog.csdn.net/androidstarjack/article/details/77923753 声明 | 本文是于亚豪 原创 终端研发部 前言: 2017年已经过大半,公众号里技术文章整理和归类了一下,方便给大家查找和阅读.这也是目前 发文的一个统计. View篇: 高级UI特效之酷炫抢红包金币下落动画 一个超级方面的用户指引view-App实现用户指引就是如此简单 让View像粒子一样自由运动 手把手教你实现RecyclerView实现上拉刷新功能 高级UI