په سر کې درې ځله تکرار شوي سرلیک ومومئ


مشکل کچه په اسانۍ سره
په مکرر ډول دننه پوښتل کیږي MAQ o9 حلونه (Wipro)
پیشه هاش

ستونزه "په سر کې درې غوره تکرار موندل" وموندله چې تاسو ته ورکړل شوي سور د n شمیرې په دې کې ځینې تکرار شوي شمیرې سره. ستاسو دنده دا ده چې په صف کې د 3 تکرار شوي شمیرې ومومئ.

بېلګه

په سر کې درې ځله تکرار شوي سرلیک ومومئ

[1,3,4,6,7,2,1,6,3,10,5,7]
1 3 6

تشریح

دلته 1,3،6 او XNUMX دوه ځله تکرار شوي.

[2,4,2,1,5,6,8,5,3,9,0,1]
1 2 5

تشریح

دلته 1,2،5 او XNUMX دوه ځله تکرار شوي.

د غوره درې تکرار عناصرو موندلو لپاره الګوریتم

  1. اعلان کړئ نقشه او د کارن-ټاکل شوي ټولګي جوړه جوړه جوړه کوي.
  2. بیرته راستانه کړئ که لږترلږه درې ارزښتونه شتون ونلري.
  3. د آخذې د هر عنصر فریکونسۍ حساب او زیرمه کړئ سور او نخشه کې یې واچوه.
  4. د جوړې ټولګي څیزونه رامینځته کړئ او د لږترلږه لږترلږه ارزښت سره یې پیل کړئ.
  5. د نقشې تعقیب پرمهال.
    1. وګوره چې د اوسني کیلي فریکونسۍ د ټاکل شوي څیزونو څخه لوړه ده.
    2. که ریښتیا وي ، نو بیا ټولې کیلي او ارزښتونه د پییر نورو څیزونو ته واړوئ.
  6. پورته درې عناصر چاپ کړئ.

تشریح

موږ ته د یو شمیر عددونو سره یو ځای ورکړل شوی چې پکې خوندي دی. ستونزه وايي چې د غوره 3 تکرار عناصر ومومئ. نو ، زموږ اصلي نظر د هر عنصر فریکونسۍ حساب او ذخیره کول دي. موږ به دا د نقشې په کارولو سره ترسره کړو. بیا یو بل نظر راځي چې د ټولګي اعالن کول دي او زموږ د ارزښتونو چیک کولو او ساتلو لپاره د دې ټولګي توکي وکاروئ کوم چې زموږ محصول کیدی شي.

موږ د هر عنصر فریکوینسي حساب کوو او بیا وروسته په نقشه کې له هر بل فریکونسی سره پرتله کوو کوم چې لوی شمیر دی لکه موږ په دریو نورو شمیرو کې لوی نمبر موندلو لپاره کارولی و.

راځئ چې یو مثال په پام کې ونیسو او پدې پوه شو.

تیر [] = {9 ، 4 ، 2 ، 9 ، 1 ، 9 ، 15 ، 1 ، 15 ، 15 ، 1 ، 2 ، 9}

په صف کې موجود د هر عنصر د فریکونسي شمیرلو سره پیل کول. موږ به د نقشې جوړول پای ته ورسوو چې په هغه کې ټول عناصر او د دوی فریکونسیونه زیرمه شوي وي. زموږ نقشه به لاندې ارزښتونه ولري:

Freq= {1:3, 2:2, 4:1, 9:4,15:3,9:4}

موږ ټول هغه څه لرو چې موږ ورته اړتیا لرو ، پدې ټولو کې موږ یوازې د پورتنۍ 3 تکرار شوي شمیرې موندلو ته اړتیا لرو. د دې لپاره ، موږ د جوړه کلاس د اجزاو ارزښت د بشپړ لږترلږه ارزښت سره پیل کوو. موږ به هر یو کیلي او د دوی فریکوینسي تیر کړو. بیا د x.first ، y.first ، z.first په توګه د شیانو سره پرتله کړئ. او په پای کې ، موږ په صف کې د 3 تکرار شوي عناصر چاپ کوو.

کوډ

C ++ کوډ ترڅو په سر کې درې ځله تکرار شوي ومومئ

#include <bits/stdc++.h>
using namespace std;
void getRepeatedNumbers(int arr[], int n)
{
    if (n < 3)
    {
        cout << "INVALID !! PLEASE ENTER CORRECT INPUT";
        return;
    }
    unordered_map<int, int> fre;
    for (int i = 0; i < n; i++)
        fre[arr[i]]++;

    pair<int, int> x, y, z;
    x.first = y.first = z.first = INT_MIN;

    for (auto val : fre)
    {
        if (val.second > x.first)
        {
            z = y;
            y = x;

            x.first = val.second;
            x.second = val.first;
        }
        else if (val.second > y.first)
        {
            z = y;

            y.first = val.second;
            y.second = val.first;
        }
        else if (val.second > z.first)
        {
            z.first = val.second;
            z.second = val.first;
        }
    }
    cout << "Top three repeated elements are  "<< x.second << " " << y.second<< " " << z.second;
}
int main()
{
    int arr[] = { 9, 4, 2, 9, 1, 9, 15, 1, 15, 15, 1, 2, 9 };
    int n = sizeof(arr) / sizeof(arr[0]);
    getRepeatedNumbers(arr, n);
    return 0;
}
Top three repeated elements are  9 15 1

په سر کې درې ځله تکرار شوي د موندلو لپاره جاوا کوډ

import java.io.*;
import java.util.*;

class Pair
{
    int first, second;
}
class topThreeRepeatedNumber
{
    public static void getRepeatedNumbers(int[] arr, int n)
    {
        if (n < 3)
        {
            System.out.print("INVALID !! PLEASE ENTER CORRECT INPUT");
            return;
        }
        TreeMap<Integer, Integer> freq = new TreeMap<>();

        for (int i = 0; i < n; i++)
        {
            if (freq.containsKey(arr[i]))
                freq.put(arr[i], 1 + freq.get(arr[i]));
            else
                freq.put(arr[i], 1);
        }

        Pair x = new Pair();
        Pair y = new Pair();
        Pair z = new Pair();
        x.first = y.first = z.first = Integer.MIN_VALUE;

        for (Map.Entry val : freq.entrySet())
        {
            if (Integer.parseInt(String.valueOf(val.getValue())) > x.first)
            {

                z.first = y.first;
                z.second = y.second;
                y.first = x.first;
                y.second = x.second;

                x.first = Integer.parseInt(String.valueOf(val.getValue()));
                x.second = Integer.parseInt(String.valueOf(val.getKey()));
            }
            else if (Integer.parseInt(String.valueOf(val.getValue())) > y.first)
            {
                z.first = y.first;
                z.second = y.second;

                y.first = Integer.parseInt(String.valueOf(val.getValue()));
                y.second = Integer.parseInt(String.valueOf(val.getKey()));
            }
            else if (Integer.parseInt(String.valueOf(val.getValue())) > z.first)
            {
                z.first = Integer.parseInt(String.valueOf(val.getValue()));
                z.second = Integer.parseInt(String.valueOf(val.getKey()));
            }
        }

        System.out.println("Top three repeated elements are " + x.second + ", "+ y.second + ", " + z.second);
    }
    public static void main(String args[])
    {
        int[] arr = { 9, 4, 2, 9, 1, 9, 15, 1, 15, 15, 1, 2, 9 };
        int n = arr.length;
        getRepeatedNumbers(arr, n);
    }
}
Top three repeated elements are 9, 1, 15

د پیچلتیا تحلیل

د وخت پیچلتیا

اې (N) هلته "n" په صف کې د عناصرو شمیر دی. د هاشامپ کارولو له امله ، موږ وکوالی شو د وخت پیچلتیا د پام وړ فاکتور په واسطه راکم کړو چې ستونزه رامینځته کړه "لین کې درې غوره تکرار کړئ" لاین.

د ځای پیچلتیا

اې (N) هلته "n" په صف کې د عناصرو شمیر دی. په خورا خراب حالت کې ، موږ به د n کلیدي ارزښت جوړه جوړه کړو. پدې توګه د ځای پیچلتیا هم خطي ده.