牛客 数组倒转

一、题目描述:

数组倒转
描述
输入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!!!😄😄😄)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值