Java 如何同时从两侧遍历阵列?
我正在寻找一种技术,我们可以同时从两侧遍历数组,同时保持O(n)的时间复杂度。可能吗?如果是的话,那么具体怎么做? 在我的案例中,我使用Java,但您可以提供任何语言的解决方案Java 如何同时从两侧遍历阵列?,java,arrays,algorithm,Java,Arrays,Algorithm,我正在寻找一种技术,我们可以同时从两侧遍历数组,同时保持O(n)的时间复杂度。可能吗?如果是的话,那么具体怎么做? 在我的案例中,我使用Java,但您可以提供任何语言的解决方案 int[] arr = new int[20]; int i=0; int j=arr.length-1; while(j>i){ System.out.println(arr[i]); System.out.println(arr[j]); i++; j--; } 这是另一种
int[] arr = new int[20];
int i=0;
int j=arr.length-1;
while(j>i){
System.out.println(arr[i]);
System.out.println(arr[j]);
i++;
j--;
}
这是另一种用于类似循环的方法
int[] arr = new int[20];
for (int i = 0; i < (arr.length / 2); i++) {
System.out.println(arr[i]);
System.out.println(arr[arr.length -1 - i]);
}
int[]arr=newint[20];
对于(int i=0;i<(arr.length/2);i++){
系统输出打印项数(arr[i]);
System.out.println(arr[arr.length-1-i]);
}
不要尝试这样做,因为,当您有一个包含100个元素的数组时,如何获得数组的元素大小数组。leneth()
函数将尝试进行增量计数,直到到达末尾)
意思-你有一个数组,其中有10个元素(1,2,3,4,5,6,7,8,9,10),你如何遍历,从1到10
和10到1
步骤1。遍历1-10
您必须逐个元素遍历,直到到达终点
步骤2。遍历10-1
您必须知道整个数组的长度-长度的含义是您必须再次遍历1-10
直到到达结束-当您考虑反向遍历时,它应该是递减的
1-10
和10-1
步骤1复杂性为o(n)
步骤2复杂度首先必须遍历以获得数组的leneght,它将是o(n),再次必须遍历反向,然后它将是o(n)
脑震荡-会浪费不必要的时间
ptr1=0,ptr2=arr.length-1代码>那么在你的while循环中,ptr1++
,ptr2--
或者我误解了你的问题吗?到目前为止你尝试了什么?可以使用(循环的)i作为第一个元素的索引,使用(length()-1)-i作为第二个元素的索引,对其进行迭代element@vivek_23不需要第二个变量:)@Stultuske Yes,true:)“我们可以同时从两侧遍历数组,同时保持O(n)的时间复杂度”如果从一端到另一端遍历数组,则为O(n)。如果将数组从一端遍历到另一端,然后再次遍历到起点,则为O(n)。如果你穿过第一个,最后一个,第二个,倒数第二个。。。是O(n)。如果您最多访问数组中的每个元素k次(对于某些常数k),则为O(n)。