zoukankan      html  css  js  c++  java
  • C

    水题,煞笔题,垃圾题

    题意弄错了。一开始以为是对于数组a,首先哦按判断出现最多的次数的元素是否唯一,不唯一的话直接输出-1,唯一的话在保存位置相邻相减找到最小。。。

    题目大意:a的一个子区间满足出现的次数最多的元素为1即可。

    保存位置,直接暴力求相同元素相邻位置区间长度找到最小值即可。

    #include<bits/stdc++.h>
    using namespace std;
    const int N=2E5+7;
    int arr[N];
    int mark[N];
    int b[N];
    vector<int >ve[N];
    
    void solve(){
        memset(b,0,sizeof b);
        memset(mark,0,sizeof(mark));
    
        int n;
        cin>>n;
        int x;
    
        int ans=0,point;
        for(int i=1;i<=n;i++) ve[i].clear();
        for(int i=1;i<=n;i++){
            cin>>x;
            ve[x].push_back(i);
        }
        int sum=100000000;
        for(int i=1;i<=n;i++){
            if(ve[i].size()==1) continue ;
            for(int j=1;j<ve[i].size();j++){
                sum=min(ve[i][j]-ve[i][j-1]+1,sum);
            }
        }
        if(sum==100000000){
            printf("-1
    ");
            return ;
        }
        cout<<sum<<endl;
    }
    int main(){
        int t;
        cin>>t;
        while(t--){
            solve();
        }
        return 0;
    }
  • 相关阅读:
    电信10兆指的是多少Mbps
    keycloak ssl-required报错问题处理
    Centos7 DNS神奇的配置
    angular4套用primeng样式
    Python库大全
    jquery根据name属性的高级选择
    Js String 属性扩展
    SQLSever 触发器
    IaaS, PaaS和SaaS
    Sql Server 基础知识
  • 原文地址:https://www.cnblogs.com/Accepting/p/11892124.html
Copyright © 2011-2022 走看看