题解 | #数组倒转#

数组倒转

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

题目的主要信息:

  • 随机输入6个整数到数组中,按照格式输出该数组(题目已经输出)
  • 将数组元素逆序,按照各自再次输出逆序后的数组(题目代码已给出输出部分)

具体做法:

输入输出代码都已经给出,我们的主要任务就是将数组元素逆序。

逆序就是首到尾,尾到首,因此我们可以想到用双指针指向数组的首尾元素,交换其位置,指针再不断向中间靠拢,不断交换位置。

alt

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 left = 0, right = arr.length - 1; //双指针从首尾开始
        while(left < right){ 
            int temp = arr[left]; //交换指针元素
            arr[left] = arr[right];
            arr[right] = temp;
            left++;  //指针向中间靠
            right--;
        }
        System.out.println(Arrays.toString(arr));
    }
}

复杂度分析:

  • 时间复杂度:O(n)O(n)nn为数组长度,循环次数为数组长度的一半
  • 空间复杂度:O(1)O(1),无额外空间
孤帆远影碧空尽 文章被收录于专栏

牛客网各类题单题解~

全部评论
int temp = arr[left];这个应该也是额外空间吧
点赞 回复 分享
发布于 2021-11-02 13:04

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-23 14:22
点赞 评论 收藏
分享
评论
26
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务