题解-换位置
2025-07-06 19:34:23
发布于:北京
2阅读
0回复
0点赞
今天早饭没太吃饱,只吃了一个小笼包,和一小碗粥。
饿着发题解。
呃呃,进入正题
实在抱歉,今天太忙,下次发彩蛋。。
这题没必要想我做的这么难
只是想让大家理解的更清楚而已。。
分析思路!
这个程序解决了身高交换问题,主要思路如下:
读取输入的身高数组
找到数组中的最大值及其索引(如果有多个最大值,选择最左边的)
如果最大值不在最左边(索引 0),则将其与最左边的元素交换
输出交换后的数组
程序通过一次遍历找到最大值的索引,然后进行交换操作,时间复杂度为 O (n),满足题目要求。
就这么简单。
上代码!
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> heights(n);
for (int i = 0; i < n; i++) {
cin >> heights[i];
}
int max_idx = 0;
for (int i = 1; i < n; i++) {
if (heights[i] > heights[max_idx]) {
max_idx = i;
}
}
if (max_idx != 0) {
swap(heights[0], heights[max_idx]);
}
for (int i = 0; i < n; i++) {
cout << heights[i] << (i == n - 1 ? "\n" : " ");
}
return 0;
}
拜拜喽,下期保证发彩蛋!
这里空空如也
有帮助,赞一个