קידס מיט די מערסט נומער פון קאַנדיז לעעטקאָדע סאַלושאַן


שוועריקייט לעוועל גרינג
אָפט געבעטן אין אַמאַזאָן בלומבערג
מענגע

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

  • קען יעדער קינד האָבן די גרעסטע נומער פון טשאָקלאַץ נאָך פאַרשפּרייטונג(אָדער מיט מערהייט אָדער דזשוינטלי)?

מיר דאַרפֿן צו דרוקן די מעגלעכקייט אין אַ באָאָלעאַן וועקטאָר.

בייַשפּיל

Array = {1 , 4 , 5 , 6 , 7}
Extra = 5
false true true true true

דערקלערונג

1 טע קינד: אפילו אויב מיר געבן אַלע נאָך קאַנדיז צו דער ערשטער קינד, עס וועט האָבן 6 קאַנדיז <7 (5 קינד). מיר דרוקן פאַלש פֿאַר אים.

2 קינד: מיר געבן אַלע עקסטרע קאַנדיז צו דעם קינד, וואָס איז ציילן 9 > 7 (5 קינד). מיר דרוקן ריכטיק פֿאַר אים.

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

צוגאַנג (זשעדנע)

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

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

קידס מיט די מערסט נומער פון קאַנדיז לעעטקאָדע סאַלושאַן

אַלגאָריטהם

  1. געפֿינען די מאַקסימום פון די מענגע און קראָם עס ווי maxCandies
  2. יניטיאַליזירן אַ באָאָלעאַן טאַכלעס מענגע
  3. לויפן אַ שלייף פון די אָנהייב פון די מענגע צו די סוף:
    1. אויב די קראַנט נומער פון קאַנדיז פון יטה קינד + עקסטרע קאַנדיז איז גרעסער ווי אָדער גלייַך צו maxCandies:
      1. שטעלן די רעזולטאַט פון דעם קינד ווי ריכטיק, פאַלש אַנדערש
  4. דרוק דעם רעזולטאַט

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

C ++ פּראָגראַם

#include <bits/stdc++.h>
using namespace std;

vector <bool> kidsWithCandies(vector <int> &candies , int extraCandies)
{
    int n = candies.size() , maxCandies = 0;
    for(int i = 0 ; i < n ; i++)
        if(candies[i] > maxCandies)
            maxCandies = candies[i];


    vector <bool> result(n);
    for(int i = 0 ; i < n ; i++)
        result[i] = (candies[i] + extraCandies >= maxCandies);

    return result;
}


int main()
{
    vector <int> candies = {1 , 4 , 5 , 6 , 7};
    int extraCandies = 5;
    for(bool x : kidsWithCandies(candies , extraCandies))
        cout << (x ? "true" : "false") << " ";
    cout << '\n';
    return 0;
}

Java פּראָגראַם

class kids_with_candies
{
    public static void main(String args[])
    {
        int[] candies = {1 , 4 , 5 , 6 , 7};
        int extraCandies = 5;
        for(boolean x : kidsWithCandies(candies , extraCandies))
            System.out.print(x + " ");
    }


    static boolean[] kidsWithCandies(int[] candies , int extraCandies)
    {
        int n = candies.length , maxCandies = 0;
        for(int i = 0 ; i < n ; i++)
            if(candies[i] > maxCandies)
                maxCandies = candies[i];

        boolean[] result = new boolean[n];

        for(int i = 0 ; i < n ; i++)
            result[i] = (candies[i] + extraCandies >= maxCandies);

        return result;
    }
}
false true true true true

קאַמפּלעקסיטי אַנאַליסיס פון דערגייונג קידס מיט די מערסט נומער פון קאַנדיז

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

אָ (N), N = גרייס פון דעם מענגע. ווען מיר דורכפאָר די גאנצע מענגע אַמאָל.

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

אָ (N), ווי מיר שפּאָרן די רעזולטאַט פון יעדער קינד אין אַ באַזונדער מענגע.