• 次大值


    为了复活那些被灭霸消灭的人,复仇者去了以前的各个地方找无限宝石,而黑寡妇和鹰眼去了灵魂宝石的所在处。为了取得灵魂宝石,黑寡妇牺牲了。在复仇者把灭霸给杀死后,美队想要复活黑寡妇,于是拜托奇异博士想办法。奇异博士利用时间宝石寻找复活黑寡妇的办法。想要救黑寡妇就得去黑暗维度找到黑寡妇的灵魂给带回来即可复活。于是复仇者去了通往黑暗维度的大门,但是大门有个守卫。守卫有一道题需要复仇者解答,解答对了就可以打开通往黑暗维度的大门。题目:给你n个数,如果给你的数是-1,你就要说出已输入的数中第二大的值。现在复仇者对这个题毫无办法,你能帮复仇者解决这个问题吗?帮复仇者复活黑寡妇。

     

    输入

    第一行给一个正整数n,(-1<=n<=2e7) 第二行给出n个正整数a1,a2,a3,…an(-1<=ai<=1e9)。

    输出

    如果ai=-1,就输出第二大的值,一个输出占一行

    样例输入 Copy

    10
    10 0 5 -1 12 3 8 -1 -1 9

    样例输出 Copy

    5
    10
    10

    提示

    解题思路:如果每一次都排序的话会超时,所以可以模拟做,
    先在找到第一个-1,对第一个-1前的所有数进行排序,找最大值x,和次大值y,
    再扫描数组如果遇到a[i]>=x,则a[i]赋值给x,x赋值给y;如果遇到a[i]大于y小于x,则a[i]赋值给y;
    AC代码:
    #include "bits/stdc++.h"
    #define hhh printf("hhh
    ")
    #define see(x) (cerr<<(#x)<<'='<<(x)<<endl)
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> pr;
    inline int read() {int x=0,f=1;char c=getchar();while(c!='-'&&(c<'0'||c>'9'))c=getchar();if(c=='-')f=-1,c=getchar();while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return f*x;}
      
    const int maxn = 1e9+7;
    const int inf = 0x3f3f3f3f;
    const int mod = 1e8+7;
    int main()
    {
        int n;
        cin>>n;
        int a[n];
        for(int i=0;i<n;i++){
            scanf("%d",&a[i]);
        }
        int i;
        for(i=0;i<n;i++){
            if(a[i]==-1)
            break;    
        }
        sort(a,a+i);
        int x=a[i-1];//当前最大
        int y=a[i-2];//当前次大 
        printf("%d
    ",y);
        for(int j=i+1;j<n;j++){
            if(a[j]==-1){
                printf("%d
    ",y);
            }
            if(a[j]>=x){
                y=x;//遇到比最大的还大
                x=a[j];
            }
            if(a[j]>y&&a[j]<x){
                y=a[j];//遇到比最大的小比此大的大
            }
        }
         return 0;
    }
  • 相关阅读:
    qt一些函数
    js时间字符串转时间戳
    golang学习之interface与其它类型转换
    golang学习之奇葩的time format
    windows下安装mongodb
    golang学习之struct
    golang学习之闭包
    js生成6位随机码
    golang学习之生成代码文档
    moment常用操作
  • 原文地址:https://www.cnblogs.com/lipu123/p/12163506.html
Copyright © 2020-2023  润新知