مٿي دريافت ڪيو ٽي ٽي بار


تڪليف جي سطح آسان
بار بار پڇڻ ۾ ايم o9 حل واپري
ڪيريو هاش

مسئلو "سرائي ٽي بار بار بند ڪريو تلاش ڪريو" ۾ چيو ويو آهي ته توهان کي هڪ ڏني وئي آهي صف نمبرن جا نمبر ھن سان گڏ ڪيترائي نمبر. توهان جو ڪم هڪ صف ۾ مٿيون 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. اعلان ڪيو نقشي ۽ صارف جو بيان ڪيل طبقو Pair سڏيو ويو آهي.
  2. واپس وڃو جيڪڏهن گهٽ ۾ گهٽ ٽي قدر موجود نه هجن.
  3. ان پٹ جي هر عنصر جي تعدد کي ڳڻيو ۽ محفوظ ڪريو صف ۽ ان کي نقشي ۾ رکيو.
  4. جوڑوں جي ڪلاس جون شيون ٺاهيو ۽ ان کي گھٽ ۾ گھٽ قيمت جي شروعات ڪئي.
  5. نقشي جي پيچيده ڪندي.
    1. چيڪ ڪريو ته ڇا موجوده ڪنڊي جي فريڪوشن مقرر ڪيل شين کان وڌيڪ آهي.
    2. جيڪڏھن صحيح آھي ، ته پوءِ سڀني جون چابيون ۽ قدرون Pair جي ٻين شين ڏانھن منتقل ڪريو.
  6. مٿين ٽن عنصر کي پرنٽ ڪريو.

وضاحت

اسان کي ان ۾ ذخيرو ڪيل ڪجهه انٽيگرن سان گڏ ترتيب ڏني وئي آهي. مسئلو آهي ته مٿين 3 بار بار عنصر ڳوليو. تنهن ڪري ، اسان جو بنيادي خيال هر عنصر جي تعدد کي ڳڻپ ۽ اسٽور ڪرڻ آهي. اسان هن کي استعمال ڪندي ڪندي نقشي جي. وري هڪ ٻيو خيال اچي ٿو جيڪو طبقن جو اعلان ڪرڻ آهي ۽ اسان جي قدرن کي جانچڻ ۽ محفوظ ڪرڻ لاءِ انهي درجي جون شيون استعمال ڪن ٿا جيڪي اسان جي پيداوار ٿي سگهن ٿيون.

اسان هر عنصر تعدد کي ڳڻپ ڪرڻ وارا آهيون ۽ پوءِ نقشه ۾ هر ٻي تعدد سان موازنہ ڪندا آهيون جيڪو وڏو نمبر آهي جهڙوڪ اسان ٻين ٽن نمبرن ۾ وڏو نه ڳولي پيا.

اچو ته هڪ مثال تي غور ڪريون ۽ انهي کي سمجهون.

arr [] = {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}

اسان سڀني وٽ اسان کي آھي ، سڀني ۾ اسان کي صرف مٿين ٽن نمبرن کي ڳولڻ جي ضرورت آھي. انهي لاءِ ، اسان پيٽ جي طبقي جي شين جي قيمت شروعاتي انگ جي گهٽ ۾ گهٽ قدر سان شروع ڪريون ٿا. اسان هر هڪ جي چئلينج ۽ انهن جي فريڪرنس تان گذري ويندي. ان کان پوء شين سان مقابلو ڪريو x.first ، y.first ، z.first. ۽ آخر ۾ ، اسان مٿي ترتيب ڏنل 3 جي مٿان واري عنصرن کي ترتيب ڏيو.

ڪوڊ

سي ٽي+ ڪوپ ۾ ٻه بار بار ڳولڻ لاءِ

#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

جاوا ڪوڊ س topي ٽي بار بار ڳولڻ لاءِ

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-key pair. اھڙيءَ طرح خلائي پيچيدگيءَ پڻ لڪير آھي.