题解 P2681 【众数】

· · 题解

思路别人已经说的很清楚了,本猫来说一下题目

众数:出现次数最多的数字

例如:1 2 3 5 6 4 5 3 3 3就是众数,因为出现的次数最多

本猫的代码

#include <iostream>
#include <algorithm>//sort头文件 
using namespace std;
int a[2927],b[2927];//定义 
void zhongshu(int i,int j){
    for (int k=i;k<=j;k++)b[k]=a[k];//找范围,保存 
    sort(b+i,b+j+1);//sort排序,不会的请出门右转百度 
    int answer=0,tmp=1,maxx=0;//max是保留字 
    for (int k=i+1;k<=j;k++){
        if (b[k]!=b[k-1]){
            if (tmp>answer){//找最多的数 
                maxx=b[k-1];
                answer=tmp;
            }
            tmp=1;//重置 
        }
        else tmp++;//别忘了++ 
    }
    if (tmp>answer){//如果比当前最大的大,就替换 
    maxx=b[j];
    answer=tmp;
    }
   cout<<maxx<<endl;//输出最多的 
}
int main(){
    int n,m;
    cin>>n>>m;//输入 
    for (int i=1;i<=n;i++)cin>>a[i];//输入 
    for (int i=1;i<=m;i++){
        int g,h,l;
        cin>>g>>h>>l;//输入 
        if (g==0)zhongshu(h,l);//调用函数 
        else a[h]=l;
    }
    return 0;
}

华丽的结尾