美团2020算法题——黑客入侵点定位
题目描述如下:
集团内部有一核心机密项目,共由150个代码模块按顺序串行执行组成(示例:模块1->模块2->…模块N…->模块149->模块150)。偶然一天,某一个模块突然被黑客入侵(当前模块也称入侵点)。因为内部已经有预防措施,现存两款从不同角度设计的反入侵检测程序,但同时也有一定检测限制:
1.输入:顺序代码段,必须以模块1开始(比如:模块1->模块2->…模块39)
2:输出:True-输入包含入侵点,False-输入不包含入侵点
3.每款检测程序可以运行多次:可多次返回False,但仅能返回一次True(由于入侵的对抗性存在,一旦输出True即报废,后续检测功能失效)
4.同一时刻只能有一款检测程序运行,每检测一次耗时10分钟
现在希望仅利用现有的两款反入侵检测程序,在最短的时间内确保可以快速定位入侵点。具体需要如何设计检测流程,时间是多久。
思路
前期思路
这道题其实与另外一道经典题目“楼层扔鸡蛋”的本质是一样的,我自己在大二参加蓝桥杯的时候遇到过这道题,当时不会做,跟这道题一样,第一反应就是二分法,但其实这里面有个问题,二分法对于尝试的次数是没有限制的,而这两道题不一样,一旦失败一次,剩下那次唯一的机会就得从头一个一个枚举,所以二分法在这里是行不通的。
介绍一个数据结构——块状链表。我们都知道&#