题意整理

  • 输入6个整数。
  • 先输出所有的数,然后将所有的数倒转,再次输出。

方法一(双指针)

1.解题思路

  • 定义两个指针,一个指向数组开头,记为l,一个指向数组结尾,记为r。
  • 建立一个while循环,每次交换l、r位置的元素,同时l后移,r前移。直到l大于等于r,结束循环。

动图展示: alt

2.代码实现

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int[] arr = new int[6];
        Scanner scanner = new Scanner(System.in);
        for (int i = 0; i < arr.length; i++) {
            arr[i] = scanner.nextInt();
        }
        System.out.println(Arrays.toString(arr));
        //定义两个指针,一个指向数组开头,一个指向数组结尾
        int l=0;
        int r=arr.length-1;
        //循环
        while(l<r){
            //交换l、r位置的元素
            int temp=arr[l];
            arr[l]=arr[r];
            arr[r]=temp;
            //l指针后移
            l++;
            //r指针前移
            r--;
        }
        System.out.println(Arrays.toString(arr));
    }
}

3.复杂度分析

  • 时间复杂度:假设数组长度为n,最多循环n/2n/2次,所以时间复杂度为O(n)O(n)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)