Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何同时从两侧遍历阵列?_Java_Arrays_Algorithm - Fatal编程技术网

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--; } 这是另一种

我正在寻找一种技术,我们可以同时从两侧遍历数组,同时保持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];
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)。