题解 | #数组元素反转#
数组元素反转
http://www.nowcoder.com/practice/8c9793ae96974a9ebb153d90ef31d357
题意整理。
- 键盘随机输入6个整数,保存到数组中。
- 先按照格式输出所有元素,然后反转数组中的元素,再次输出所有元素。
方法一(双指针)
1.解题思路
- 定义2个指针l和r,l指向数组开头,r指向数组末尾。
- 每次交换l、r指针处的元素,l后移,r前移。直到l大于等于r。
动图展示:
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/2次,所以时间复杂度为O(n)。
- 空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)。
xqxls的题解 文章被收录于专栏
牛客题解