计算除去当前元素后的最大值 - 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;
}

代码解释

  1. 读取输入:
    • 首先读取元素个数 n
    • 使用 std::vector 存储所有元素。
  2. 找到最大值:
    • 使用 std::max_element() 函数找到数组中的最大值 max_height
  3. 计算并输出结果:
    • 遍历每个元素 heights[i]:
      • 如果当前元素等于最大值,则在剩余元素中找到最大值并输出。
      • 否则,直接输出最大值 max_height
    • 确保每个输出的整数后都有一个空格,并在最后没有换行。

总结

本文介绍了如何使用 C++ 解决 '计算除去当前元素后的最大值' 问题。代码简洁易懂,并包含详细的解释,希望对你有所帮助。

计算除去当前元素后的最大值 - C++算法题解

原文地址: https://www.cveoy.top/t/topic/TAL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录