我遇到了一个面试问题:

“给定不同大象的生命时间。找出最大数量的大象活着的时期。”例如:
输入: [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/

10-13 07:36