思路
这是一个典型的模拟题。我们需要按照题目描述的规则,一年一年地模拟山峰和山谷消失的过程,直到某一年不再有任何山消失为止。
核心模拟流程:
-
数据结构:由于山会不断被移除,我们需要一个能够高效执行删除操作的数据结构。数组(如C++的 std::vector 或Java的 ArrayList)在删除中间元素时效率较低(时间复杂度为 O(N)),因为需要移动后续所有元素。相比之下,双向链表(如C++的 std::list 或Java的 LinkedList)是更理想的选择,因为它可以在 O(1) 的时间内删除一个已知位置的元素。
-
模拟循环:我们用一个变量 year 从 1 开始计数,进入一个主循环。这个循环的终止条件是“某一年没有任何山消失”。