题解 | #数组元素反转#

数组元素反转

http://www.nowcoder.com/practice/8c9793ae96974a9ebb153d90ef31d357

题意整理。

  • 键盘随机输入6个整数,保存到数组中。
  • 先按照格式输出所有元素,然后反转数组中的元素,再次输出所有元素。

方法一(双指针)

1.解题思路

  • 定义2个指针l和r,l指向数组开头,r指向数组末尾。
  • 每次交换l、r指针处的元素,l后移,r前移。直到l大于等于r。

动图展示: alt

2.代码实现

#include <iostream>
using namespace std;

int main() {

    int arr[6] = { 0 };

    int len = sizeof(arr) / sizeof(int);
    
    for (int i = 0; i < len; i++) {
        cin >> arr[i];
    }

    cout << "[";
    for (int i = 0; i < len; i++) {
        if (i == len - 1) {
            cout << arr[i] << "]" << endl;
            break;
        }
        cout << arr[i] << ", ";
    }

    //定义2个指针,l指向数组开头,r指向数组末尾
    int l=0,r=len-1;
    while(l<r){
        //交换l、r指针处的元素
        int temp=arr[l];
        arr[l]=arr[r];
        arr[r]=temp;
        //l后移,r前移
        l++;
        r--;
    }

    cout << "[";
    for (int i = 0; i < len; i++) {
        if (i == len - 1) {
            cout << arr[i] << "]" << endl;
            break;
        }
        cout << arr[i] << ", ";
    }

    return 0;
}

3.复杂度分析

  • 时间复杂度:循环最多执行n/2n/2n/2次,所以时间复杂度为O(n)O(n)O(n)
  • 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)O(1)O(1)
xqxls的题解 文章被收录于专栏

牛客题解

全部评论

相关推荐

神哥了不得:放平心态,再找找看吧,主要现在计算机也变卷了,然后就比较看学历了,之前高中毕业你技术强,都能找到工作的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务