《天堂旅行团》

“她是乌云中的最后一缕光,
牢狱里的最后一把钥匙,
我伸手穿过头顶河水,
抓到的最后一根稻草。” ——《天堂旅行团》

众所周知每个天堂都有自己的高度,这些高度决定了它们在人们心中的位置
高度越高,对应的位置也就越靠前
给你一些天堂的高度h,请你输出在人们心中位置能排在第二的天堂高度

输入格式:

第一行一个正整数 n(2≤n≤10^7)第二行 n 个正整数 h1,h2,…,hn分别表示每个天堂的高度 (1≤h≤10^5)

输出格式:

输出一个正整数,代表能排在第二位的天堂高度

输入样例:

3
3 5 4

输出样例:

4

样例说明

该样例中,最高的天堂高度为5 ,位置排在第二的天堂高度为 4,所以结果为4

开始的时候用数组去做发现超限了(10的7次方的数组强行扩容好像也不对)

尝试用标记法来AC
1.将数组初始化为0
2.从边界值开始遍历记录数组
3.找出第2个大于0的数组元素
题目中的高度第2没说是小于第1,这里又有一个坑,可能排在第2的和第1一样大,所以需要判断第1个大于0的元素是否大于2
(就相当于一堆小朋友排队伍,高的站前,矮的站后,而站在第2,可能和第1一样高)

#include<stdio.h>

int main()
{
    int n,a[100001]= {0},m,flag=0;
    scanf("%d",&n);
    for(int i=0; i<n; i++)
    {
        scanf("%d",&m);
        a[m]++;
    }
    for(m=100000; m>=1; m--)
    {
        if(a[m]>0&&flag==0)
        {
            if(a[m]>=2)
            {
                printf("%d",m);
                return 0;
            }
            flag=1;
            m--;
        }
        if(a[m]>0&&flag!=0)
        {
            printf("%d",m);
            break;
        }
    }
    return 0;
}

叮~打卡成功(´・㉨・`)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kk_阿白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值