题解 | #数组元素反转#
数组元素反转
https://www.nowcoder.com/practice/8c9793ae96974a9ebb153d90ef31d357
核心思路:两个数交换 = 取两个数的和,然后通过减去另外一个数来得到这个数。
a = a + b; b = a - b; a = a - b;
方法缺陷:两个数的和可能会越界。(数值小的时候可以用)。
应用场景:两个数交换、数组翻转等等。
附 数组元素翻转源代码:
#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] << ", "; } // write your code here...... // 数组翻转 - 基于 swap 不需要第三个变量 for (int i = 0,j=len-1; i <=j; i++,j--) { arr[i] += arr[j]; arr[j] = arr[i]-arr[j]; arr[i] = arr[i]-arr[j]; } cout << "["; for (int i = 0; i < len; i++) { if (i == len - 1) { cout << arr[i] << "]" << endl; break; } cout << arr[i] << ", "; } return 0; }