一、题目描述:
数组倒转
描述
输入6个整数,先将其输出然后再将数组倒转,再次输出数组
输入描述:
用户随机输入的6个int类型变量
输出描述:
先输出用户输入顺序的数组(这一步预设代码已给出)
再输出反转后的数组(输出格式为Arrays.toString(arr),参考预设代码中的输出格式)
示例1
输入:52 10 37 40 60 83
输出:[52, 10, 37, 40, 60, 83]
[83, 60, 40, 37, 10, 52]
二、思路及解题方法
方法一(双指针)
1.解题思路
- 定义两个指针,一个指向数组开头,记为left,一个指向数组结尾,记为right。
- 建立一个while循环,每次交换left、right位置的元素,同时left后移,right前移。直到left大于等于right,结束循环。
- 2.代码实现
import java.util.Scanner;
import java.util.Arrays;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
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 left = 0, right = arr.length - 1;
//循环
while(left < right){
//交换left、right位置的元素
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
//left指针后移
left++;
//right指针前移
right--;
}
System.out.println(Arrays.toString(arr));
}
}
3.复杂度分析
- 时间复杂度:假设数组长度为n,最多循环n/2次,所以时间复杂度为O(n)。
- 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)。
(over!!!😄😄😄)