最大值与次大值

该博客介绍了一个编程问题,即在给定的整数序列中找到最大值和严格次大值。程序使用C++编写,通过遍历序列两次,首先找到最大值,然后找到比最大值小的第二大值。保证了在序列长度2到300万范围内,且数值绝对值不超过2亿的情况下,次大值总是存在的。
摘要由CSDN通过智能技术生成

给定一个长度为 n 的序列 a ,求它的最大值和严格次大值(就是不能和最大值大小相同)。

输入

第一行,一个整数 n 。
第二行, n 个整数,第 i 个表示 ai 。

输出

两个整数,表示答案。

样例输入 

5

#include<bits/stdc++.h>
using namespace std;
int i,j,k,m,n,ans,sum,l,r;
int a;
int main(){
    int maxn=-2e9,maxm=-2e9;
    scanf("%d",&n);
    for(int i=1; i<=n; i++){
        scanf("%d",&a);
        if(a > maxn){
            maxn = a;
            continue;
        }
        if(a == maxn) continue;
        if(a > maxm) {
            maxm = a;
            continue;
        }
    }
    printf("%d %d",maxn,maxm);
    return 0;
}

1 2 5 3 4

样例输出  5 4

提示

对于所有数据,2 ≤ n ≤ 3 × 106, |ai| ≤ 2 × 109 ,保证严格次大值存在。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值