Find the number that appears the most times among several numbers

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

struct number {
    
    
    int num;
    int value;
};

int most(vector<int>& v) {
    
    
    sort(v.begin(), v.end());
    number n1, n2;
    n1.num = 0;
    n1.value = 0;
    n2.num = 1;
    n2.value = v.front();
    for(int i = 0; i < v.size()-1; i++) {
    
    
        if(v[i] == v[i+1]) n2.num++;
        else {
    
    
            if(n2.num > n1.num)
                n1 = n2;
            n2.num = 1;
            n2.value = v[i+1];
        }
    }
    if(n2.num > n1.num)
        n1 = n2;
    return n1.value;
}

int main() {
    
    
    int n;
    cin >> n;
    vector<int> v(n);
    for(int i = 0; i < n; i++) cin >> v[i];
    int res = most(v);
    cout << res << endl;
    return 0;
}
#include <cstdio>

int main() {
    
    
    int n, x;
    scanf("%d", &n);
    scanf("%d", &x);
    int temp = x;
    int num = 1;
    for(int i = 1; i < n; i++) {
    
    
        scanf("%d", &x);
        if(num == 0) temp = x;
        if(temp == x) num++;
        else num--;
    }
    printf("%d\n", temp);
    return 0;
}

Guess you like

Origin blog.csdn.net/qq_18431031/article/details/105785190