ssh13 2024-05-06 19:13 采纳率: 66.7%
浏览 4

如何用C++解决一下问题

给你一个整数数组,返回此数组中第三大的数 。如果不存在,则返回数组中最大的数。
第一行输入数组中元素的个数,第二行输入数组元素。
样例输入
3
3 2 1
样例输出

1

样例输入
2
1 2
样例输出
2

样例输入
4
2 2 3 1

样例输出
1

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-05-06 19:13
    关注

    引自免费微信小程序:皆我百晓生

    要解决这个问题,你可以使用C++中的标准库函数std::sort()对数组进行排序,然后找到数组中的第三个最大值。以下是详细的步骤和代码实现:

    1. 首先,包含必要的头文件,并定义一个名为third_largest的函数,它接受一个整数数组以及其大小作为参数。
    2. 使用std::sort()函数对数组进行升序排序。
    3. 如果数组长度小于3,那么没有第三个最大的数,所以返回数组中的最大值(即数组最后一个元素)。
    4. 否则,返回数组中的倒数第三个元素,也就是索引为arr.length - 3的元素。

    下面是完整的C++代码实现:

    #include <iostream>
    #include <vector>
    #include <algorithm>
    
    int third_largest(const std::vector<int>& arr) {
        // 对数组进行排序
        std::sort(arr.begin(), arr.end());
    
        int size = arr.size();
        
        // 如果数组长度小于3,返回最大值
        if (size < 3) {
            return arr[size - 1];
        } else {
            // 返回第三个最大的数
            return arr[size - 3];
        }
    }
    
    int main() {
        int n;
        std::cin >> n;
    
        std::vector<int> arr(n);
        for (int i = 0; i < n; ++i) {
            std::cin >> arr[i];
        }
    
        int result = third_largest(arr);
        std::cout << result << std::endl;
    
        return 0;
    }
    

    这段代码首先读取输入的数组长度和元素,然后调用third_largest函数计算并返回第三个最大的数。注意,这里我们使用了std::vector来存储数组,因为它可以自动管理内存,并且提供了方便的操作接口。如果你必须使用原始数组,只需要将上述代码中的std::vector<int>替换为int*和数组长度,并相应地修改其他部分。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月6日

悬赏问题

  • ¥20 组态王 海康Vision Master
  • ¥15 思科WS-C4503-E核心交机
  • ¥15 批量提取WORD信息到EXCEL
  • ¥15 git后台提示“指定的网络不可用”如何处理?
  • ¥15 Omi框架如何兼容Vue
  • ¥15 windows api中有没有可以通过scsi设备发送离散buffer的接口,如何解决?(相关搜索:linux系统|结构体)
  • ¥15 r语言练习题,三个问题都有疑惑
  • ¥15 绝对路径都行,为什么相对路径不行
  • ¥20 ARM64架构下SSCMS部署问题
  • ¥20 请教如何让移动端的热区自适应