تمام ننestو عنصر وقتي طور تي بار بار بار بار ٿيو


تڪليف جي سطح وچولو
بار بار پڇڻ ۾ بيلزابر ڪولي ميڊيا نيٽپسڪو Nvidia ناٽڪ سروس UHG آپٽم
ڪيريو هاش اسٽرنگ

اسان کي آر اين [] سائز اين تي ڏنل آهي. اسان کي اهو نن smallestڙو عنصر ڳولڻو آهي جيڪو صحيح وقت ۾ بار بار هجي صف.

مثال

پٽ

A [] = {1 ، 2 ، 2 ، 5 ، 5 ، 2 ، 5}

ڪ = 3

پيداوار

نن frequencyي عنصر سان فريڪئنسي ڪ آھي: 2

پهچ 1: برادري قوت

مرڪزي خيال

صف ۾ ھر عنصر لاءِ ، اسين مڪمل صف کي پھچائي سگھون ٿا ۽ ان جي فريڪئنسي ڪ جي برابر آھي ، پوءِ اسان پنھنجو پويون جواب ۽ ھي عنصر گھٽ ۾ گھٽ وٺنداسين. آخر ۾ ، اسان پنهنجو آخري جواب ڇپائينداسين.

ننestا ننementا عنصر ڳولڻ لاءِ الورگريتم ٺيڪ ڪي ٽي دفعا بار بار

  1. ڪوڙو سان aڪيل 'پرچم' شروع ڪريو. جھنڊو ظاهر ڪندو آھي جيڪڏھن اسان ڪو عنصر فريڪئنسي ڪ سان مليو آھي يا نه.
  2. 0 کان ن -1 تائين آئون حد ۾ لوپ هليو
    1. صفر سان متغير ڳڻپيوءَ کي شروعات ڪريو جيڪو صف ۾ الف [i] جي تعدد شمار ڪندو.
    2. 0 کان ن -1 تائين ج جي حد ۾ هڪ لوپ هلايو
      1. جيڪڏهن A [j] اي [برابر] جي برابر آهي ، واڌاري جي ڳڻپ 1
    3. جيڪڏهن ڳڻپيوت K جي برابر آهي ، اپ ڊيٽ ڪريو ans = min (ans ، A [i]).
  3. چيڪ ڪريو ، جيڪڏهن پرچم صحيح آهي ته پوءِ اين ايس کي پرنٽ ڪيو ، ٻي صورت ۾ ڇاپيو ته فريڪئنسي ڪي سان ڪوبه عنصر ناهي.

تي عملدرآمد

سي ++ پروگرام

#include <bits/stdc++.h>
using namespace std;
void smallestElementRepeatedExactlyKTimes(vector<int> A, int K)
{
    int n = A.size();
    bool flag = false;
    int ans = 0;
    for (int i = 0; i < n; i++)
    {
        int count = 0;
        for (int j = 0; j < n; j++)
        {
            if (A[i] == A[j])
            {
                count++;
            }
        }
        if (count == K)
        {
            if (flag == false)
            {
                flag = true;
                ans = A[i];
            }
            else
            {
                ans = min(ans, A[i]);
            }
        }
    }
    if (flag == false)
    {
        cout << "There is no element with frequency K.";
    }
    else
    {
        cout << "Smallest element with frequency K is: " << ans;
    }
    return;
}
int main()
{
    vector<int> A = {1, 2, 2, 5, 5, 2, 5};
    int K = 3;
    smallestElementRepeatedExactlyKTimes(A, K);
    return 0;
}
Smallest element with frequency K is: 2

جاوا پروگرام

public class Main
{
    static void smallestElementRepeatedExactlyKTimes(int A[],int K)
    {
        int n = A.length;
        boolean flag = false;
        int ans = 0;
        for (int i = 0; i < n; i++)
        {
            int count = 0;
            for (int j = 0; j < n; j++)
            {
                if (A[i] == A[j])
                {
                    count++;
                }
            }
            if (count == K)
            {
                if (flag == false)
                {
                    flag = true;
                    ans = A[i];
                }
                else
                {
                    ans = Math.min(ans, A[i]);
                }
            }
        }
        if (flag == false)
        {
            System.out.print("There is no element with frequency K.");
        }
        else
        {
            System.out.print("Smallest element with frequency K is: "+ ans);
        }
        return;
    }
  public static void main(String[] args) {
    int A[] = {1, 2, 2, 5, 5, 2, 5};
        int K = 3;
        smallestElementRepeatedExactlyKTimes(A, K);
  }
}
Smallest element with frequency K is: 2

نن Kا نن findingا عنصر ڳولڻ لاءِ پيچيدگي جو تجزيو بي عڪس مطابق ڪي ٽائيم

وقت جي پيچيدگي

اسان ٻه اينسٽ ٿيل لوپ استعمال ڪري رهيا آهيون ، سائز اين جي ٻئي. تنهنڪري ڪل وقت جي پيچيدگي آهي اي (اين ^ 2).

خلائي پيچيدگي

اسان مسلسل جڳهه استعمال ڪري رهيا آهيون. تنهنڪري خلائي پيچيدگي آهي اي (1).

پهچ 2: هشنگ استعمال ڪرڻ

مرڪزي خيال

اسان هر عنصر جي تعدد کي هش ميز ۾ محفوظ ڪري سگهون ٿا.

انهي کان پوء ، اسان صرف ڪوش ٽراورس ڪري سگھون ٿا نن elementا نن elementا عنصر ڳولڻ لاءِ ٿوري گهڻي تعداد سان.

ننestا ننementا عنصر ڳولڻ لاءِ الورگريتم ٺيڪ ڪي ٽي دفعا بار بار

  1. جيڪڏهن هر عنصر کي هش ميز ۾ شامل ڪيو وڃي.
  2. ڪوڙو سان aڪيل 'پرچم' شروع ڪريو. جھنڊو ظاهر ڪندو آھي جيڪڏھن اسان ڪو عنصر فريڪئنسي ڪ سان مليو آھي يا نه.
  3. هاش ٽيبل کي ترتيب ڏيو ۽ نن frequencyي نن elementي عنصر کي فريڪئنسي ڪ.
  4. جيڪڏهن پرچم صحيح آهي ته پوءِ اين ايس کي پرنٽ ڪيو ، ٻي صورت ۾ پرنٽ ڪيو ته فريڪئنسي ڪ جي عنصر ناهي.

مثال سان سمجھو

A [] = {1 ، 2 ، 2 ، 5 ، 5 ، 2 ، 5}

ڪ = 3

هن ترتيب لاءِ ، هش ٽيبل اهڙي ريت نظر ايندي.

تمام ننestو عنصر وقتي طور تي بار بار بار بار ٿيو

تي عملدرآمد

سي ++ پروگرام

#include <bits/stdc++.h>
using namespace std;
void smallestElementRepeatedExactlyKTimes(vector<int> A, int K)
{
    int n = A.size();
    bool flag = false;
    int ans = 0;
    unordered_map<int, int> hash_table;
    for (int i = 0; i < n; i++)
    {
        hash_table[A[i]]++;
    }
    for (auto element : hash_table)
    {
        if (element.second == K)
        {
            if (flag == false)
            {
                flag = true;
                ans = element.first;
            }
            else
            {
                ans = min(ans, element.first);
            }
        }
    }
    if (flag == false)
    {
        cout << "There is no element with frequency K.";
    }
    else
    {
        cout << "Smallest element with frequency K is: " << ans;
    }
    return;
}
int main()
{
    vector<int> A = {1, 2, 2, 5, 5, 2, 5};
    int K = 3;
    smallestElementRepeatedExactlyKTimes(A, K);
    return 0;
}
Smallest element with frequency K is: 2

جاوا پروگرام

import java.util.*; 
public class Main
{
    static void smallestElementRepeatedExactlyKTimes(int A[],int K)
    {
        int n = A.length;
        boolean flag = false;
        int ans = 0;
        HashMap<Integer, Integer> hash_table = new HashMap<Integer, Integer>(); 
        for (int i = 0; i < n; i ++) 
        {
            if (hash_table.containsKey(A[i])) 
            {
                hash_table.put(A[i], hash_table.get(A[i]) + 1); 
            }
            else{
                hash_table.put(A[i], 1);
            }
        }
        for(Map.Entry element: hash_table.entrySet())
        {
            if(((int)element.getValue()==K))
            {
                if(flag==false)
                {
                    flag=true;
                    ans=((int)(element.getKey()));
                }
                else{
                    ans=Math.min(ans,((int)(element.getKey())));
                }
            }
        }
        if (flag == false)
        {
            System.out.print("There is no element with frequency K.");
        }
        else
        {
            System.out.print("Smallest element with frequency K is: "+ ans);
        }
        return;
    }
  public static void main(String[] args) {
    int A[] = {1, 2, 2, 5, 5, 2, 5};
        int K = 3;
        smallestElementRepeatedExactlyKTimes(A, K);
  }
}
Smallest element with frequency K is: 2

نن Kا نن findingا عنصر ڳولڻ لاءِ پيچيدگي جو تجزيو بي عڪس مطابق ڪي ٽائيم

وقت جي پيچيدگي

اسان صرف هڪ ڀيرو دريافت ڪري رهيا آهيون ، تنهنڪري وقت جي پيچيدگي آهي اي (اين).

خلائي پيچيدگي

اسان صف ۾ عناصر جي تعدد کي ذخيرو ڪرڻ لاءِ هش ٽيبل کي سنڀالي رکون ٿا جئين خلائي پيچيدگي آهي اي (اين).

حوالا