计算除去当前元素后的最大值 - C++算法题解
计算除去当前元素后的最大值 - C++算法题解
本篇文章将介绍如何使用 C++ 解决 '计算除去当前元素后的最大值' 问题,并提供详细的代码实现和解释,帮助你理解算法思路并提升编程技能。
问题描述
给定一个包含 n 个整数的数组,对于每个元素,计算除去该元素后的数组最大值。
输入描述
第一行一个整数 n 表示元素个数 (0 ≤ n ≤ 10^6),第二行 n 个数字,aᵢ 表示第 i 个元素 (1 ≤ aᵢ ≤ 10^9)
输出描述
n 个整数,每个整数对应除去当前元素后的最大值,每个数之后跟一个空格(包括最后一个),无换行
C++ 代码实现
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
int n;
std::cin >> n;
std::vector<int> heights(n);
for (int i = 0; i < n; i++) {
std::cin >> heights[i];
}
int max_height = *std::max_element(heights.begin(), heights.end());
for (int i = 0; i < n; i++) {
if (heights[i] == max_height) {
std::cout << *std::max_element(heights.begin() + i + 1, heights.end());
} else {
std::cout << max_height;
}
if (i < n - 1) {
std::cout << ' ';
}
}
return 0;
}
代码解释
- 读取输入:
- 首先读取元素个数
n。 - 使用
std::vector存储所有元素。
- 首先读取元素个数
- 找到最大值:
- 使用
std::max_element()函数找到数组中的最大值max_height。
- 使用
- 计算并输出结果:
- 遍历每个元素
heights[i]:- 如果当前元素等于最大值,则在剩余元素中找到最大值并输出。
- 否则,直接输出最大值
max_height。
- 确保每个输出的整数后都有一个空格,并在最后没有换行。
- 遍历每个元素
总结
本文介绍了如何使用 C++ 解决 '计算除去当前元素后的最大值' 问题。代码简洁易懂,并包含详细的解释,希望对你有所帮助。
原文地址: https://www.cveoy.top/t/topic/TAL 著作权归作者所有。请勿转载和采集!