题解 | #数组倒转#

数组倒转

http://www.nowcoder.com/practice/3a90caee736a45e1ad70b1d4105dec5f

题意整理

  • 输入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)
xqxls的题解 文章被收录于专栏

牛客题解

全部评论

相关推荐

10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
点赞 评论 收藏
分享
7 收藏 评论
分享
牛客网
牛客企业服务