【发布时间】:2020-01-21 07:49:37
【问题描述】:
我正在寻找一种技术,我们可以同时从两侧遍历数组,同时保持 O(n) 的时间复杂度。是否可以?如果是,那么究竟如何? 我使用的是 Java,但您可以提供任何语言的解决方案。
【问题讨论】:
-
ptr1 = 0, ptr2 = arr.length-1;所以在你的 while 循环中,ptr1++,ptr2--还是我误解了你的问题? -
到目前为止您尝试过什么?您可以迭代它,使用 i(循环的)作为第一个元素的索引,使用 (length() - 1) - i 作为第二个元素的索引
-
@vivek_23 不需要第二个变量 :)
-
@Stultuske 是的,是的 :)
-
"我们可以同时从两侧遍历数组,同时保持 O(n) 的时间复杂度" )。如果您将数组从一端遍历到另一端并再次回到起点,则为 O(n)。如果你遍历第一个,最后一个,第二个,倒数第二个......它是O(n)。如果您最多访问数组中的每个元素 k 次(对于某个常数 k),则为 O(n)。