[Mảng 1 Chiều Cơ Bản]. Bài 30. Mảng đánh dấu 5

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Tác giả:
Nguồn bài:
28Tech
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Cho mảng số nguyên A[] gồm N phần tử, hãy tìm giá trị có số lần xuất hiện nhiều nhất trong mảng, nếu có nhiều giá trị có cùng số lần xuất hiện thì lấy giá trị xuất hiện trước theo thứ tự trong mảng

Tham khảo lý thuyết mảng đánh dấu : [C++]. Mảng Đánh Dấu


Đầu vào

Dòng đầu tiên là số nguyên dương N

Dòng thứ 2 gồm N số nguyên viết cách nhau một vài khoảng trắng


Giới hạn

1<=N<=1000

0<=A[i]<=10^6


Đầu ra

In ra giá trị có số lần xuất hiện nhiều nhất kèm theo tần suất của nó


Ví dụ :

Input 01
6
7 2 0 3 9 5
Output 01
7 1

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • -1
    aduangzi  đã bình luận lúc 28, Tháng 6, 2025, 14:42

    khuyên ae nên xem map pair trước nhé nó sẽ dễ hơn nhưng nếu không dùng thì nó sẽ hiểu sâu hone :)))

    include <bits/stdc++.h>

    using namespace std; using ll = long long;

    int main(){ iosbase::syncwithstdio(false); cin.tie(nullptr); freopen("vao.inp","r",stdin); freopen("ra.out","w",stdout); int n; cin >> n; vector<int> a(n); map<int,int> mp; pair<int,int> v(INTMIN,INT_MIN); for (int i = 0; i < n; i++) { cin >> a[i]; mp[a[i]]++; } for (int i = 0; i < n; i++) { if (v.second < mp[a[i]]) { v.first = a[i]; v.second = mp[a[i]]; } } cout << v.first << " " << v.second; return 0; }


  • -1
    bengokyeuanh99  đã bình luận lúc 28, Tháng 5, 2025, 14:58

    !/usr/bin/env python3

    -- coding: utf-8 --

    from collections import defaultdict import sys

    def main(): input = sys.stdin.readline

    n = int(input())
    arr = list(map(int, input().split()))
    
    # Map: value -> (frequency, first_index)
    freq_map = defaultdict(lambda: [0, -1])
    
    for idx, val in enumerate(arr):
        freq_map[val][0] += 1
        if freq_map[val][1] == -1:
            freq_map[val][1] = idx
    
    # Tìm phần tử có frequency lớn nhất, nếu bằng nhau thì ưu tiên vị trí nhỏ hơn
    max_val = None
    max_freq = -1
    min_index = n + 1
    
    for val, (freq, first_idx) in freq_map.items():
        if freq > max_freq or (freq == max_freq and first_idx < min_index):
            max_freq = freq
            max_val = val
            min_index = first_idx
    
    print(f"{max_val} {max_freq}")
    

    if name == "main": main()


  • 0
    quynhcham416  đã bình luận lúc 28, Tháng 5, 2025, 12:57

    import sys input=sys.stdin.readline n=int(input()) N=list(map(int,input().split())) def dd(a): dg=[] for i in a: if i not in dg: dg.append(i) return dg ff=dd(N) dem=len(ff) kq=lq=0 for i in range(dem): c=ff[i] if N.count(ff[i])>kq: lq=ff[i] kq=N.count(ff[i]) print(lq, kq)


  • 0
    htgiao404  đã bình luận lúc 8, Tháng 5, 2025, 6:23

    include <bits/stdc++.h>

    using namespace std; using ll = long long;

    int cnt[1000005];

    int main(){ ios::syncwithstdio(false); cin.tie(nullptr); int n; cin >> n; int a[n]; for(int i = 0; i < n; i++){ cin >> a[i]; cnt[a[i]]++; } int maxtime = *maxelement(cnt, cnt + 1000005); for(int i = 0; i < n; i++){ if(cnt[a[i]] == max_time){ cout << a[i] << ' ' << cnt[a[i]]; break; } } }


  • 0
    VDev  đã bình luận lúc 20, Tháng 1, 2025, 13:03

    FULL AC

    #include <bits/stdc++.h>
    #include <iomanip>
    #include <cmath>
    #include <climits>
    #define ll long long
    using namespace std;
    ll cnt = 0, s = 0, cnt2[10000011], a[10000011], res = INT_MIN;
    ll val;
    int main(){
        bool check = true;
        ll n;
        cin >> n;
        for(ll i = 1; i <= n; i++){
            cin >> a[i];
        }
        for(ll i = 1; i <= n; i++){
                cnt2[a[i]]++;
        }
        for(ll i = 1; i <= n; i++){
            if(cnt2[a[i]] > res){
                res = cnt2[a[i]];
                val = a[i];
            }
        }
        for(ll i = 1; i <= n; i++){
                if(cnt2[a[i]] == cnt2[a[i + 1]]){
                    check = true;
                }else{
                    check = false;
                    break;
                }
        }
        for(ll i = 1; i <= n; i++){
            if(cnt2[a[i]] != 0 && check == true){
                if(cnt2[a[i]] > res){
                    res = cnt2[a[i]];
                    val = a[i];
                    break;
                }
            }
        }
        cout << val << " " << res;
        return 0;
    }
    

  • 0
    minhhuy1604it  đã bình luận lúc 2, Tháng 10, 2024, 15:17 sửa 5

    Heading

    /#include < bits/stdc++.h>

    using namespace std;

    int b[1000001];

    int main(){

    int n,i;

    cin>>n;

    int a[n];

    for( i=0 ; i < n ; i++ ){

    cin>>a[i];

    b[a[i]]++; }

    int max=-1e9;

    for( i=0; i < n; i++){

    if(b[a[i]]>max){ max=b[a[i]]; }

    }

    for( i=0 ; i < n ; i++ ){

    if(b[a[i]]==max){

    cout<< a[i]<< " "<< max<< endl;

    break; }

    }

    return 0; }


    • 0
      minhhuy1604it  đã bình luận lúc 2, Tháng 10, 2024, 15:33 chỉnh sửa

      Phần bình luận này khó share code vãi :(((

      Nhớ xóa dấu các trước bits/stdc++.h để chạy code nha mấy bạn


  • 7
    Zinno  đã bình luận lúc 20, Tháng 7, 2024, 13:46

    GG, this is so hard lmao:)


    • -2
      duy210  đã bình luận lúc 3, Tháng 9, 2024, 11:02

      hard thật


  • -25
    phong2k12  đã bình luận lúc 16, Tháng 5, 2024, 14:04

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.