我遇到了一个面试问题:
“给定不同大象的生命时间。找出最大数量的大象活着的时期。”例如:
输入: [5, 10]
、 [6, 15]
、 [2, 7]
输出:[6,7]
(3 头大象)
我想知道这个问题是否与“n”个字符串的最长子字符串问题有关,这样每个字符串代表一个时间段的连续范围。
例如:[5,10] <=> 5 6 7 8 9 10
如果没有,有什么可以很好地解决这个问题?我想用 C++ 编写它。
任何帮助将不胜感激。
最佳答案
对于每头大象,创建两个事件:大象出生,大象死亡。按日期对事件进行排序。现在遍历这些事件,并不断计算还活着的大象数量;每次达到新的最大值时,记录开始日期,每次从最大值下降时,记录结束日期。
此解决方案不依赖于整数日期。
关于c++ - 给定不同大象的生命周期,找出大象最多存活的时期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12483213/