当前位置:网站首页>笔试面试题目:求丢失的猪
笔试面试题目:求丢失的猪
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
边栏推荐
- [original] about the abnormal situation of high version poi autosizecolumn method
- Adobe Prelude /Pl 2020软件安装包(附安装教程)
- 来自不同行业领域的50多个对象检测数据集
- Oschina plays on Sunday - before that, I always thought I was a
- Flink的sink实战之一:初探
- 【总结系列】互联网服务端技术体系:高性能之数据库索引
- Basic concepts of computer network (5) basic principles of local area network
- Cloud alibabab notes come out, the whole network detailed explanation only this one hand is slow
- Visual Studio 2015 未响应/已停止工作的问题解决
- iOS 学习笔记二【cocopods安装使用和安装过程中遇到的问题及解决办法】【20160725更新】
猜你喜欢
vivoS7e和vivoS7的区别 哪个更值得入手
ArrayList源码分析
Which is more worth starting with the difference between vivos7e and vivos7
Six key points of data science interview
计算机网络基本概念(五)局域网基本原理
Installing MacOS 11 Big Sur in virtual machine
不多不少,大学里必做的五件事(从我的大一说起)
Personal current technology stack
临近双11,恶补了两个月成功拿下大厂offer,跳槽到阿里巴巴
Astra: Apache Cassandra的未来是云原生
随机推荐
C++在C的基础上改进了哪些细节
Visual studio 2015 unresponsive / stopped working problem resolution
We interviewed the product manager of SQL server of Alibaba cloud database, and he said that it is enough to understand these four problems
Astra: the future of Apache Cassandra is cloud native
洞察——风格注意力网络(SANet)在任意风格迁移中的应用
Is there a big difference between i5 1135g7 and i51035g1? Which is better?
Oschina plays on Sunday - before that, I always thought I was a
Ulab 1.0.0 release
Rust: command line parameter and environment variable operation
More than 50 object detection datasets from different industries
Mate 40系列发布 搭载华为运动健康服务带来健康数字生活
哔哩哔哩常用api
SQL Server 2008R2 18456错误解决方案
ts流中的pcr与pts计算与逆运算
python学习 day1——基础学习
狗狗也能操作无人机!你没看错,不过这其实是架自动驾驶无人机 - 知乎
Unparseable date: 'Mon Aug 15 11:24:39 CST 2016',时间格式转换异常
Spotify是如何推动数据驱动决策的?
PDMS cutting software
PX4添加新的应用