מינימום נומער פון סובסעץ מיט בוילעט עלעמענטן


שוועריקייט לעוועל גרינג
אָפט געבעטן אין Capital One גע העאַלטהקאַרע יבם מאָנפראָג לאַבס יאַנדעקס
מענגע האַש האַשינג סאָרטינג

פּראָבלעם סטאַטעמענט

רעכן איר האָבן אַן מענגע פון גאַנץ נומערן פון גרייס n. די פּראָבלעם ויסזאָגונג פרעגן צו געפֿינען אויס די מינימום נומער פון סובסעץ מיט בוילעט עלעמענטן, דאָס איז סובסעץ וואָס קענען זיין געגרינדעט וואָס כּולל אַלע די פאַרשידענע / באַזונדער עלעמענטן פֿון די מענגע.

בייַשפּיל

arr[] = {2,4,6,2,1,4,2}
3

דערקלערונג: {1, 2, 4, 6}, {2, 4} און {2} קענען זיין די סאַבסעץ.

arr[] = {2,5,6,7,5,4,2}
3

דערקלערונג: {2, 5, 6, 7} און {2, 4} קענען זיין די צוויי סובסעץ.

 

אַלגערידאַם צו געפֿינען די מינימום נומער פון סובסעץ מיט פאַרשידענע עלעמענטן

1. Declare a map and count and store the frequency of each element of the array into the map.
2. Set output to 0.
3. Traverse the map and find out the maximum between the output and each value of key in the map and store it into the output.
4. Return the value of output.

מינימום נומער פון סובסעץ מיט בוילעט עלעמענטן

דערקלערונג

מיר האָבן געגעבן אַ ינטאַדזשער מענגע אין וואָס positive נומערן זענען סטאָרד. מיר האָבן געבעטן צו געפֿינען די צאָלונג פון מינימום מעגלעך סאַבסעץ וואָס קענען זיין געגרינדעט פֿון די געגעבן מענגע און האט אַלע בוילעט עלעמענטן אין די סאַבסעט. פֿאַר דעם מיר וועלן האַשינג, האַשינג אָפפערס אַ עפעקטיוו לייזונג אין וואָס מיר קענען דערגרייכן גוט צייט קאַמפּלעקסיטי אַנשטאָט פון אַ נאַיוו צוגאַנג.

מיר וועלן דערקלערן אַ מאַפּע, ציילן און קראָם די פריקוואַנסיז פון יעדער עלעמענט פון אַ מענגע. אויב מיר האָבן אַ נייַע פּאָזיציע אין אַ מאַפּע פֿאַר עטלעכע עלעמענטן, מיר מאַכן אַ פּלאַץ פֿאַר אים און פֿאַר די ווייַטער צייַט, אויב דער זעלביקער עלעמענט אַקערז, מיר נאָר באַקומען די ווערט און פאַרגרעסערן די אָפטקייַט פון 1. אין C ++, עס זיך פּיקס די עלעמענט און דעמאָלט מיר נאָר דורכפירן ינקראַמאַנט אָפּעראַציע, אָבער אין Java, מיר צו קאָנטראָלירן פֿאַר דעם עלעמענט אין באַזונדער. מיר האַלטן די צאָלונג פון פריקוואַנסיז ווייַל מיר וועלן געפֿינען זיך די מאַקסימום אָפטקייַט צווישן אַלע די עלעמענטן און רעזולטאַטן אין אונדזער ענטפער.

מיר וועלן שטעלן דעם רעזולטאַט צו 0 און מיר וועלן אַריבער די מאַפּע אין וואָס מיר האָבן סטאָרד די פריקוואַנסיז פון יעדער עלעמענט. מיט דעם, מיר דאַרפֿן נישט סאָרט די מענגע ווייַל מיט די מאַפּע מיר האָבן די עלעמענטן ין עס שוין אויסגעשטעלט. מיר קלייַבן יעדער עלעמענט און באַקומען די אָפטקייַט און פאַרגלייכן עס מיט די פּראָדוקציע. מיר דאַרפֿן צו געפֿינען די מאַקסימום פון די צוויי וואַלועס, די פּראָדוקציע און די אָפטקייַט פון פּיקט עלעמענטן. און דאָס איז די פארלאנגט ענטפער צו געפֿינען מינימום נומער פון סובסעץ מיט פאַרשידענע עלעמענטן.

קאָד צו געפֿינען די מינימום נומער פון סובסעץ מיט פאַרשידענע עלעמענטן

C ++ קאָד

#include <iostream>
#include<unordered_map>

using namespace std;

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

    int output = 0;
    for (auto x : mp)
        output = max(output, x.second);

    return output;
}
int main()
{
    int arr[] = {2,4,6,2,1,4,2};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << getMinSubset(arr, n);
    return 0;
}
3

 

Java קאוד

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

class MinimumSubsets
{
    public static int getMinSubset(int arr[], int n)
    {
        HashMap<Integer, Integer> mp = new HashMap<>();
        for (int i = 0; i < n; i++)
            mp.put(arr[i],mp.get(arr[i]) == null?1:mp.get(arr[i])+1);

        int output = 0;
        for (Map.Entry<Integer,Integer> entry : mp.entrySet())
            output = Math.max(output, entry.getValue());

        return output;
    }
    public static void main(String[] args)
    {
        int arr[] = { 2,4,6,2,1,4,2};
        int n = arr.length;
        System.out.println( getMinSubset(arr, n));

    }
}
3

 

קאַמפּלעקסיטי אַנאַליסיס

צייט קאַמפּלעקסיטי

דאָ, מיר האָבן געוויינט ונאָרדערעד_מאַפּ אָדער האַש מאַפּע וואָס מאכט ינסערשאַן, דילישאַן און אַפּדיישאַן אין אָ (1). אזוי, מיר האָבן אַ לינעאַר קאַמפּלעקסיטי פון אָ (N) ווו “N” איז די נומער פון עלעמענטן אין דער מענגע.

ספעיס קאַמפּלעקסיטי

זינט מיר סטאָרד שליסל און ווערט פּערז, אַזוי מאַקס, עס וועט זיין N פּערז אַז געבן אונדז אָ (N) אָרט קאַמפּלעקסיטי ווו “N” איז די נומער פון עלעמענטן אין די מענגע. אַזוי מיר קענען זאָגן אַלגערידאַם צו געפֿינען מינימום נומער פון סובסעץ מיט פאַרשידענע עלעמענטן האט לינעאַר פּלאַץ קאַמפּלעקסיטי לייזונג.