详见及参考:
https://www.nowcoder.com/practice/8c9793ae96974a9ebb153d90ef31d357?tpId=225&tags=&title=&difficulty=0&judgeStatus=0&rp=0
双指针
时间复杂度:循环最多执行n/2次,所以时间复杂度为O(n)。
空间复杂度:需要额外常数级别的空间,所以空间复杂度为O(1)。
#include <iostream>
using namespace std;
int main() {
int arr[6] = { 0 }; // 初始化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] << ", ";
}
// write your code here......
int left = 0, right = len - 1; //双指针从首尾开始
while (left < right) {
//交换指针元素
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
//指针向中间靠拢
left++;
right--;
}
cout << "[";
for (int i = 0; i < len; i++) {
if (i == len - 1) {
cout << arr[i] << "]" << endl;
break;
}
cout << arr[i] << ", ";
}
return 0;
}
双指针,利用swap()
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
int arr[6] = { 0 }; // 初始化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] << ", ";
}
// write your code here......
int left = 0, right = len - 1; //双指针从首尾开始
while (left < right) {
//交换指针元素
swap(arr[left], arr[right]);
//指针向中间靠拢
left++;
right--;
}
cout << "[";
for (int i = 0; i < len; i++) {
if (i == len - 1) {
cout << arr[i] << "]" << endl;
break;
}
cout << arr[i] << ", ";
}
return 0;
}
创建新数组,倒序插入值
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
int arr[6] = { 0 }; // 初始化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] << ", ";
}
// write your code here......
int newArr[len];
for (int i=len-1; i>=0; i--) {
newArr[len-1-i] = arr[i];
}
// for (int i=0; i<len; i++) {
// arr[i] = newArr[i];
// }
// 或者
memcpy(arr, newArr, sizeof(newArr));
cout << "[";
for (int i = 0; i < len; i++) {
if (i == len - 1) {
cout << arr[i] << "]" << endl;
break;
}
cout << arr[i] << ", ";
}
return 0;
}