问题如下:-
给定 N 头不同大象的寿命,用一对整数表示。
前任。[5,10] [6,15] [2,7] 表示一头大象从 5 年到 10 年。第二只从 6 年到 15 年,依此类推。
你可以假设一头大象最多只能活 M 年。(不是问题的一部分,但我们可能需要它来表示算法复杂性。)
给定这些数据,找出最大数量的大象生活的年份。随意解决关系。
我已经尝试了几种方法来解决这个问题,但似乎没有什么比天真的解决方案的复杂性更重要的了。天真的解决方案是: -
1. Maintain an array(call it ctr).
2. For every set you encounter,
increment all values of ctr in that range.
3. Once you have traversed all sets,
find the index with the highest value in ctr.
很容易看出复杂度将是 O(N*M)。
谁能提供更好的解决方案?
另一个问题是:是否存在可以在 O(1) 时间内更改一系列值的数据结构?在数组中,要修改 k 个元素,显然需要 O(k) 时间。有更好的吗?