數組中最頻繁的元素


難度級別 容易獎學金
經常問 土磚 亞馬遜 事實集 風箏 印孚瑟斯 空氣質量
排列 哈希 哈希 排序

給你一個 排列 整數問題陳述說,您必須找出數組中最頻繁出現的元素。 如果有多個值出現的次數最多,那麼我們必須打印其中的任何一個。

輸入

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

產量

最常見的元素是:1

解釋

在這裡,1出現3次(數組中最頻繁的元素)

輸入

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

產量

最常見的元素是:23

解釋

在這裡,23出現3次(數組中最頻繁的元素)

算法

  1. 聲明地圖。
  2. 計算數組中每個元素的頻率並將其存儲到Map中。
  3. 將maxCount設置為0,並將結果作為Integer的最小值。
  4. 遍歷地圖並檢查:
    1. 如果maxCount
      1. 將結果設置為該數組元素
      2. 將maxCount設置為該元素的頻率

數組中最頻繁元素的說明

這裡給出的問題是說找出數組中最頻繁出現的元素。 同樣,我們得到的是,如果有多個值出現的次數最多,那麼我們可以自由打印其中的任何一個。 該代碼正在遍歷映射,該映射將以鍵和值作為元素以及它們的頻率(如果發生這種情況),則它將打印第一個最大頻繁數。 我們將定義一個函數getMostFrequent,它將接收參數作為數組和數組的長度。 這裡的第一件事是遍歷數組,並存儲和計算每個數組元素的頻率,並不斷增加每個數組元素的頻率。

為此,我們將使用兩個值maxCount和result。 將maxCount的值初始化為0,結果為Integer的最小值。 我們將遍歷地圖並檢查maxCount是否小於元素的頻率,如果發現它為真,則將maxCount的值設置為元素的頻率,並將結果設置為該元素。

讓我們考慮一個例子:

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

我們將遍歷數組,計算並存儲每個元素的頻率,遍歷後,我們將得到這樣的地圖。

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

我們將遍歷地圖並獲取每個元素,並檢查它們的頻率(如果大於maxCount),

maxCount = 0,結果=整數。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

  • 值= 3頻率= 2

如果maxCount <value.second為false,則不執行任何操作。

  • 值= 5頻率= 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) 哪裡 “ n” 是數組中元素的數量。

空間複雜度

O(N) 哪裡 “ n” 是數組中元素的數量。

參考