배열에서 가장 빈번한 요소


난이도 쉽게
자주 묻는 질문 어도비 벽돌 아마존 팩트 셋 Fourkites 인포시스 MAQ
배열 해시 해싱 정렬

당신은 주어진 정렬 정수 문제 설명은 배열에있는 가장 빈번한 요소를 찾아야한다고 말합니다. 최대 횟수만큼 발생하는 값이 여러 개 있으면 그중 하나를 인쇄해야합니다.

입력

[1, 4,5,3,1,4,16]

산출

가장 빈번한 요소는 다음과 같습니다. 1

설명

여기서 1은 3 회 (배열에서 가장 빈번한 요소)

입력

[23,12,12,34,23,23]

산출

가장 빈번한 요소는 다음과 같습니다. 23

설명

여기서 23은 3 회 (배열에서 가장 빈번한 요소)

암호알고리즘

  1. 지도를 선언하십시오.
  2. 배열의 각 요소의 빈도를 계산하고 맵에 저장합니다.
  3. maxCount를 0으로 설정하고 결과를 Integer의 최소값으로 설정합니다.
  4. 지도를 가로 질러 다음을 확인합니다.
    1. maxCount 인 경우
      1. 결과를 해당 배열 요소로 설정
      2. maxCount를 해당 요소의 빈도로 설정

배열에서 가장 빈번한 요소에 대한 설명

여기에 주어진 질문은 배열에 존재하는 가장 빈번한 요소를 찾는 것입니다. 또한 최대 횟수만큼 발생하는 값이 여러 개있는 경우 해당 값을 자유롭게 인쇄 할 수 있습니다. 코드는 키와 값을 요소로 가질지도를 순회하고이 조건이 발생하면 빈도를 표시합니다. 그러면 첫 번째 최대 빈도를 인쇄합니다. 인수를 배열과 배열의 길이로받는 함수 getMostFrequent를 정의합니다. 여기서 첫 번째는 배열을 탐색하고 각 배열 요소의 빈도를 저장 및 계산하고 각 배열 요소의 빈도를 계속 증가시키는 것입니다.

이를 위해 maxCount와 result라는 두 가지 값을 사용합니다. maxCount 값을 0으로 초기화하고 결과는 Integer의 최소값이됩니다. 맵을 횡단하여 maxCount가 요소의 빈도보다 작은 지 확인하고, true이면 maxCount의 값을 요소의 빈도로 설정하고 해당 요소에 대한 결과를 설정합니다.

예를 들어 보겠습니다.

arr = {2, 5, 2, 3, 3, 2, 1}

우리는 배열을 횡단하고, 각 요소의 빈도를 계산하고 저장할 것이며, 횡단 후에 우리는 이와 같은지도를 갖게 될 것입니다.

myMap={1:1, 2:3, 3:2, 5:1}

지도를 탐색하고 각 요소를 가져 와서 maxCount보다 크면 빈도를 확인합니다.

maxCount = 0, 결과 = Integer.MIN_VALUE

  • 값 = 1, 빈도 = 1

maxCount <value.second가 true이면 maxCount 값과 결과를 업데이트합니다.

결과 = value.first, maxCount = value.second;

결과 = 1, maxCount = 1

  • 값 = 2, 빈도 = 3

maxCount <value.second가 true이면 maxCount 값과 결과를 업데이트합니다.

결과 = value.first, maxCount = value.second;

결과 = 2, maxCount = 3

  • value = 3 frequcny = 2

maxCount <value.second가 false이면 아무 작업도 수행하지 않습니다.

  • value = 5 frequcny = 1

maxCount <value.second가 false 인 경우.

map의 모든 값을 탐색했으며 결과에 필요한 출력이 있으며 결과를 반환합니다.

결과 = 2

배열에서 가장 빈번한 요소

실시

배열에서 가장 자주 사용되는 요소에 대한 C ++ 프로그램

#include <bits/stdc++.h>
using namespace std;

int getMostFrequent(int arr[], int n)
{
    unordered_map<int, int> myMap;
    for (int i = 0; i < n; i++)
        myMap[arr[i]]++;

    int maxCount = 0, result = INT_MIN;
    for (auto value : myMap)
    {
        if (maxCount < value.second)
        {
            result = value.first;
            maxCount = value.second;
        }
    }
    return result;
}
int main()
{
    int arr[] = { 2, 5, 2, 3, 3, 2, 1 };
    int n = sizeof(arr)/sizeof(arr[0]);
    cout << getMostFrequent(arr, n);
    return 0;
}
2

배열에서 가장 자주 사용되는 요소를위한 Java 프로그램

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;

class mostFrequentElement
{
    public static int getMostFrequent(int arr[], int n)
    {
        Map<Integer, Integer> myMap =new HashMap<Integer, Integer>();

        for(int i = 0; i < n; i++)
        {
            if(myMap.containsKey(arr[i]))
            {
                myMap.put(arr[i], myMap.get(arr[i])+1);
            }
            else
            {
                myMap.put(arr[i], 1);
            }
        }
        int maxCount = 0, result= Integer.MIN_VALUE ;
        for(Entry<Integer, Integer> val : myMap.entrySet())
        {
            if (maxCount < val.getValue())
            {
                result = val.getKey();
                maxCount = val.getValue();
            }
        }
        return result;
    }
    public static void main (String[] args)
    {
        int arr[] = { 2, 5, 2, 3, 3, 2, 1 };
        int n = arr.length;
        System.out.println(getMostFrequent(arr, n));
    }
} 
2

배열에서 가장 빈번한 요소에 대한 복잡성 분석

시간 복잡성

O (N) 어디에 "엔" 배열의 요소 수입니다.

공간 복잡성

O (N) 어디에 "엔" 배열의 요소 수입니다.

참조