当前位置:网站首页>笔试面试题目:求丢失的猪
笔试面试题目:求丢失的猪
2020-11-08 10:30:00 【osc_ccy4urvn】
原文发表于:

今天国庆,也是中秋,实在难得。在21世纪的100年内,仅有4年是这样的。今天在家里,陪家人,做饭吃,干家务活,看点闲书,顺便写点东西,待会出去逛逛,然后回来跑跑步。
校园秋招陆续开始了,祝在校同学拿到心仪的offer,也祝社招的同学跳槽顺利。
今天,我们来看下A公司的一个面试题:
有n只猪,用车拉到菜市场去卖,这群猪的身上分别贴了1~n的编号,突然,有一只猪从车上跳下溜走了,求溜走的猪的编号。

这猪还是挺可怜的,溜走了,也要追查编号。下面,我们来看看算法。
算法1:作差法
思路:
Step1: 计算出1~n的和a.
Step2: 求剩余猪的编号之和b.
Step3: a-b即为溜走猪的编号。
这种算法的缺点是:求1~n的和,可能会溢出。
算法2:标记法
思路:开辟一个数组m,用m[i]=0或1来记录i是否存在,针对丢失的猪j, 必有m[j]=0.
这种算法的缺点是:空间复杂度为O(n)
算法3:排序法
思路:对剩余的猪进行排序,在溜走的猪j的编号处,必然出现断裂,从而知道j的具体值。
这种算法的缺点是:以快排为例,时间复杂度和空间复杂度都无法达到最优。
算法4:异或法(最佳算法)
思路:
Step1: 计算出1~n的异或值a.
Step2: 求剩余猪的编号异或值b.
Step3: 求a和b的异或值,即为溜走的猪的编号j.
原理如下:
假设n=5, 丢失的猪的编号是3, 那么剩余的猪的编号是2, 4, 1, 5,下面我们来计算:
j = 1^2^3^4^5^2^4^1^5
显然,根据异或的交换律性质,可以对上述运算进行简化,如下:
j = 1^1^2^2^4^4^5^5^3 = 3
这就求出了溜走的猪的编号。此时,时间复杂度是O(n), 空间复杂度是O(1), 这是最佳算法。至于程序,很简单,故不再赘述。
在之前的文章中,我们其实可以看到,异或是一种特殊的“加减法”,所以,算法1和算法4是有异曲同工之妙的。关于二进制的异或,可以参考:
版权声明
本文为[osc_ccy4urvn]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4302796/blog/4707993
边栏推荐
- Analysis of ArrayList source code
- NOIP 2012 提高组 复赛 第一天 第二题 国王游戏 game 数学推导 AC代码(高精度 低精度 乘 除 比较)+60代码(long long)+20分代码(全排列+深搜dfs)
- Oschina plays on Sunday - before that, I always thought I was a
- Iqkeyboardmanager source code to see
- Cloud Alibabab笔记问世,全网详解仅此一份手慢无
- 个人目前技术栈
- ts流中的pcr与pts计算与逆运算
- Improvement of rate limit for laravel8 update
- Game optimization performance (11) - Zhihu
- 计算机网络基本概念(五)局域网基本原理
猜你喜欢
![[original] about the abnormal situation of high version poi autosizecolumn method](/img/3b/00bc81122d330c9d59909994e61027.jpg)
[original] about the abnormal situation of high version poi autosizecolumn method

YGC问题排查,又让我涨姿势了!

Personal current technology stack

Spotify是如何推动数据驱动决策的?

Oops, the system is under attack again

模板链表类学习

Astra: Apache Cassandra的未来是云原生

5g + Ar out of the circle, China Mobile Migu becomes the whole process strategic partner of the 33rd China Film Golden Rooster Award

Game optimization performance (11) - Zhihu

FORTRAN 77 reads some data from the file and uses the heron iteration formula to solve the problem
随机推荐
Japan PSE certification
Spotify是如何推动数据驱动决策的?
print( 'Hello,NumPy!' )
2020-11-05
YGC问题排查,又让我涨姿势了!
C++在C的基础上改进了哪些细节
Python learning Day1 -- Basic Learning
分布式共识机制
2天,利用下班后的4小时开发一个测试工具
学习小结(关于深度学习、视觉和学习体会)
Six key points of data science interview
How can a technician take over a complex system?
【原创】关于高版本poi autoSizeColumn方法异常的情况
NOIP 2012 提高组 复赛 第一天 第二题 国王游戏 game 数学推导 AC代码(高精度 低精度 乘 除 比较)+60代码(long long)+20分代码(全排列+深搜dfs)
Improvement of rate limit for laravel8 update
It's 20% faster than python. Are you excited?
洞察——风格注意力网络(SANet)在任意风格迁移中的应用
Astra: Apache Cassandra的未来是云原生
5g + Ar out of the circle, China Mobile Migu becomes the whole process strategic partner of the 33rd China Film Golden Rooster Award
Improvement of rate limit for laravel8 update