Transcript for:
Maximum Subarray Sum Problem

डियर स्टूडेंट्स वेलकम टू गेट्स मेजर्स आज की इस वीडियो में एक्सप्लेन करने जा रहा हूं मैक्सिमम सम सब एरे प्रॉब्लम सब एरे प्रॉब्लम में हमारे पास मल्टीपल प्रॉब्लम्स आती है लेकिन उनमें से जो आज की इस वीडियो में एक्सप्लेन करने जा रहा हूं वो कौन सी प्रॉब्लम है मैक्सिमम सम फाइंड आउट करना है मतलब मैक्सिमम जो एडिशन है वो एक्चुअल में फाइंड आउट करना है और सब एरे के हिसाब से अब देखो पहले तो प्रॉब्लम को समझो एक्चुअल में है क्या क्योंकि सॉल्यूशन तो बात की बात है यार पहले प्रॉब्लम को समझो दिमाग लगाओ लॉजिक लगाओ उसके बाद जो है वो आप कोड समझो अब देखो सबसे पहले लेट्स से मेरे पास एक एरे दिया हुआ है a अब उस एरे में टोटल सात एलिमेंट्स हैं लेंथ ऑफ द एरे कितना है सेवन है तो मेरा इंडेक्स जो है वो रो से स्टार्ट होता है तो 0 1 2 3 4 5 6 तो इस तरीके से मैंने एरे में अपने इंडेक्स नंबर जो है वो लिख दिए हर एक एलिमेंट्स के अब यहां पे मेरे को गिवन है ये एरे भी गिवन है अब मेरे को यहां पे एक और चीज क्या गिवन है सब एरे का साइज मुझे लेट्स से एक सब एरे का साइज w जो है वो फोर गिवन है कि मेरे को जो एक सब एरे लेना है उसका साइज कितना चार अब सब एरे क्या होता है एक तरह से सबसेट है यार किसी बड़ी चीज का छोटा सा सबसेट वही यहां पे है एरे का छोटा सा एक पार्ट लेना है अब यहां पे मेरे को दे दिया कि जो सब एरे है जो छोटा पार्ट ले रहे हो वो चार साइज का होना चाहिए तो अगर मैं चार साइज का बनाऊं तो मैं अगर स्टार्टिंग जीरो से करूं तो जीरो से मैं चार का एक दो तीन और चार यानी ये मेरा एक सब एरे हो गया जिसको मैं नाम दे सकता हूं s1 जो कि मेरा एक सब एरे है ठीक है अब इस सब एरे का सम फाइंड आउट करना है क्योंकि मेरे को गिवन है ये चीज गिवन है आपको थ्री भी दे सकते हैं 5 2 जो मर्जी दे दे तो आपको उस हिसाब से यहां पे s1 मेरा टोटल जो है वो कैलकुलेट करो तो वो क्या कहता है 8 और 3 11 13 14 ठीक है और ये हो गया जी 8 और 3 11 13 और पांच कितने हो गए 18 तो यानी s1 का टोटल कितना है 18 है ठीक है तो ये मेरा इस तरीके से कैलकुलेट करना है सब एरे का टोटल सम तो कैलकुलेट कर लिया अब उसके बाद और कोई सब एरे बन सकता है ओबवियसली एक और सब एरे बन सकता है आप क्या करो यहां से स्टार्ट करो और यहां तक अगर हम चले तो ये मेरा एक s2 बन गया और इस क्योंकि मैंने साइज फोर ही लेना है तो मैंने s1 जो है वो पहले से स्टार्ट करके यहां तक किया दूसरा मैंने वन से स्टार्ट करके यहां तक किया तो इनका सम देखा तो 8 और दो 10 5 15 और सेन कितने हो गए 22 तो ये मेरा s2 है इसका जो टोटल सम है वो कितना 22 तो ये मैंने भी नोट कर लिया उसके बाद क्या और सबरे यस एक और सबरे कौन सा बन सकता है आप यहां से स्टार्ट करो और चार एलिमेंट तक जाओ तो यानी ये मेरा एक तरह से सबरे बन गया और इसका अगर मैं टोटल बात करूं तो ये टोटल कितना आ गया सात और सात 14 और छ आपका हो गया s3 जो है वो 20 हो गया ठीक है तो इस तरीके से मेरा s3 हो गया और फाइनली इसी तरीके से एक और सवेर अगर मैं यहां से लेके यहां तक जाऊं तो ये मेरा एक s4 हो गया और इस s4 में मेरा टोटल कितना हो हो गया यहां पे अ 7 और 5 12 और 6 18 ् 12 कितने हो गए जी आपके 30 हो गए तो ये मेरे इस तरीके से पहले हर एक सब एरी का सम फाइंड आउट कर लिया अब इनमें से मैक्सिमम वैल्यू कौन सी है वो मुझे आउटपुट बतानी है बस ये मेरी पहले तो प्रॉब्लम को समझो ये मेरी प्रॉब्लम है इस तरीके से जो है वो इस प्रॉब्लम का आंसर आएगा अब लगाओ लॉजिक अब लगाओ दिमाग कि हमें किस तरीके से इस चीज को करना है तो इसको करने के लिए मल्टीपल मेथड्स है इस वीडियो में मैं आपको जो बेसिक अप्रोच है जो नेव अप्रोच है जिसको हम ब्रूट फोर्स मेथड भी कह देते हैं या डायरेक्ट अप्रोच कह देते हैं वो बता रहा हूं और नेक्स्ट वीडियो में हम लोग बात करेंगे जो इसके लिए सबसे ज्यादा यूज की जाती है स्लाइडिंग विंडो मेथड लेकिन स्लाइडिंग विंडो मेथड क्यों आया क्यों नहीं करते ये वो वो सारी चीजें पहले आपको बेसिक मेथड पता होना चाहिए क्योंकि इंटरव्यूज में कॉम्पिटेटिव एग्जाम में कहीं पे भी आप जाते हो तो यार वो बोलेगा कि स्लाइडिंग विंडो बता आपने बता दी रट्टा मारा हुआ था बता वो बोलेगा भैया पहले क्या था अब पहले तो सर पता नहीं जी क्या था तो क्यों आई भैया तू पहले वाली अप्रोच ही लगा लेता तो मुझे पता होना चाहिए पहले वाली अप्रोच क्या थी उसके अंदर क्या प्रॉब्लम थी क्या टाइम कॉम्प्लेक्शन ये सब फिर हम नेक्स्ट में देंगे तो इसलिए पहले बेस बनाना बहुत जरूरी है इसीलिए बेसिक अप्रोच यहां पे बता रहा हूं और उस अप्रोच में हमने करना क्या है आप खुद ही थोड़ा सा सोचो कि ठीक है हमें प्रॉब्लम तो अब समझ में आ गई अब मुझे यहां पे बहुत सारे चैलेंज आ रहे हैं लेकिन उनमें से जो सबसे पहले एक चैलेंज क्या कहता है कि यार मेरे को एक्चुअल में जो ये सब एरे है है सब एरे इस तरीके से चलते जा रहे हैं पहले हमने यहां से यहां तक किया फिर हमने यहां से यहां तक किया फिर हमने यहां से यहां तक बनाया फिर हमने यहां से यहां तक बनाया इसके बाद कोई और सब एरे बनेगा नहीं इसके अलावा तो कोई और चार साइज का तो सब एरे बनेगा नहीं तो मेरे को स्टॉप यानी कहां पे करना है मेरे को यहां पे स्टॉप करना है इस पॉइंट पे मेरे को क्या करना है स्टॉप करना है यानी आपको हमेशा किस पॉइंट पे स्टॉप करना प अगर मैं लेट्स सपोज थ्री का ले लेता थ्री का ले लेता तो यानी आप तीन यहां पे बनाते फिर आप यहां पे बनाते फिर आप यहां पे बनाते और इस तरीके से करते-करते लास्ट आपका ये होता और फिर आप यहां पे स्टॉप करते इससे आगे तो जा नहीं सकते क्योंकि तीन का अगर आप बना रहे हो तो ओबवियसली अगर नेक्स्ट शिफ्ट कर दोगे तो दो रह जाएंगे एलिमेंट नेक्स्ट तो है ही नहीं यानी यहां पे स्टॉप करना पड़ता तो एक तरह से खुद ही थोड़ा सा सोचो आप किस एलिमेंट पे स्टॉप कर रहे हो चार का केस था तो तीन पे स्टॉप कर रहे हो अगर तीन का केस होता तो आप इंडेक्स नंबर चार पे स्टॉप करो और ये कैसे निकल के आ रहा है व्हाट इज द लेंथ ऑफ द टोटल एरे टोटल लेंथ कितनी एरे की टोटल है जी आपकी सेवन माइनस विंडो का साइज कितना है आपका विंडो का साइज है चार यानी क्या आया थ्री यानी आपको इस इंडेक्स पे स्टॉप करना है अगर मैं तीन-तीन का एक सब एरे बनाऊं तो टोटल साइज कितना एरे का सेवन और मेरा जो विंडो का साइज एक तरह से कह लो या एक तरह से जो सब एरे है उसका साइज कितना है जी तीन और क्या आंसर आया चार तो फिर आपको इंडेक्स नंबर चार पे स्टॉप करना है तो ये इस तरीके से लॉजिकली अगर सोचोगे उसके बाद आप थोड़ा-थोड़ा कोडिंग जो है वो करना स्टार्ट करो इसीलिए पहले लॉजिक को बिल्ड किया करो और उसके बाद अब हमें पता है कि यार मेरे को पहले चार ये इस तरीके से अगर मैं पहले सब एरे की बात करूं इस सब एरे में मेरे को यहां पे सारे एलिमेंट्स को एक-एक करके जोड़ना है तो यानी एक लूप तो आपका पहले चलेगा जो पहले इन जो एक तरह से सब अरेज को ध्यान में रखेगा और दूसरा लूप चलेगा जो इस सब एरे के अंदर एलिमेंट्स के ऊपर चलके और सारे एलिमेंट्स को जोड़ेगा और वही चीज हमने यहां पे की है हमने क्या किया सबसे पहले हमने एक यहां पे वेरिएबल ले लिया जिसका नाम रख दिया हमने मैक्स मैक्सिमम जो कि सबसे मैक्सिमम वाला जो आंसर है वो फाइंड आउट करके बताएगा और मैक्सिमम हमने इनिश आइज कर दिया किसी स्मॉलेट वैल्यू से आप चाहे स्मालेस्ट वैल्यू अब कईयों के दिमाग में आता है सर -10 ले लेते अरे भैया सम कर रहे हैं तो हो सकता है ये वैल्यूज हमेशा प्लस में थोड़ी ना होंगी आपको माइनस में भी दे सकते हैं आपको माइनस में 12 दे दे माइनस में कुछ भी दे दे तो इस तरीके से अगर वैल्यूज दे दें तो भैया ये तो आपका बड़बड़ा आ जाएगा तो इसलिए छोटी वैल्यू लो लेकिन छोटी माइनस इनफिनिटी से छोटी क्या है कुछ भी नहीं है तो इसलिए इसको इनिश इज कर दिया हमने माइनस इनफिनिटी से उसके बाद फॉर i = 0 टू लेंथ ऑफ एरे - w जो मैंने अभी बताया जो कि आपका पहले ये वाला सब एरे फिर ये वाला सब एरे फिर उसके बाद ये वाला और फाइनली ये वाला सब एरे पे स्टॉप कर जाएगा और उसके लिए हमने आथ जो है वो एक मेरा यहां पे मैंने इस तरीके से लूप चलाया जो i = 0 से लेके अगेन भाई लेंथ ऑफ द एरे कितना है हमारे पास पास 7 - 4 व्हिच इज द सबरे साइज तो टोटल मेरा थ्री यानी रो से लेके 1 2 3 तक चलेगा क्योंकि इसके आगे तो कोई सब एरे बनेगा ही नहीं तो यानी ये मेरा लूप जो है वो इसका ध्यान रखेगा कि मेरे को इसके इस तरीके से सब एरे लेने हैं उसके बाद मैंने क्या किया एक और वेरिएबल ले लिया मैंने करंट और करंट को इनिश इज कर दिया मैंने जीरो से वो एक्चुअल में करंट इसका नाम क्यों रखा है कि जो एट प्रेजेंट जो करेंटली मेरी जो विंडो है करेंटली जो मेरा सब एरे है उस सब एरे का टोटल जो है वो करंट में होगा तो नेक्स्ट टाइम नया विंडो बनेगा नया सब एरे बनेगा उसका साइज र उसका सम रखेगा फिर इस तरीके से जो है वो करंट हमेशा करंट जो आपका सब एरी है उसका जो टोटल सम है उसको कंटेन करके बैठा है देन लो जी फॉर j = i2 i + w -1 अब हमारे पास जो एक लूप हमने चलाया अब अंदर j और इस j की रिस्पांसिबिलिटी क्या है जब मेरा i जो है वो कहां से लेके यहां तक चल रहा है हम ने क्या करना है इस आ के अंदर ये वाला जो सब एरिया है उसके अंदर मुझे जो है वो इनका सम फाइंड आउट करना है और ये जो j है ये कब तक चलेगा जीरो से जहां से मेरा आ है वहां से स्टार्ट करें लेकिन रुके कहां पे जो मेरा w तक कितना तक रुके जोड मेरा टोटल कितना है जी आपका फोर है तो यानी फोर से ज्यादा एलिमेंट पेना जाए तो हर बार ये इस तरीके से चले तो कैसे चलेगा i j = i आ जहां पे आपका i है वहीं से हमारा j चलेगा लेकिन कब तक चलेगा ये ये बड़ा इंपोर्टेंट है जी i + w -1 मतलब पहली बार की बात करूं तो 0 + 4 -1 व्हिच इज 3 देख लो जी 0 1 2 3 तो यानी यहां तक चलेगा और यही हम चाहते हैं जब हम वन पे पहुंचेंगे तो वन से लेके वो यहां तक चलना चाहिए तो फिर i = 1 तो यहां पे उस केस में क्या होगा जब i मेरा वन पे होगा तो j मेरा वन से लेके कहां तक चलेगा 1 + w कितना है 4 - 1 क्योंकि w तो मेरा विंडो का साइज कह लो या सबेरे का साइज व्हिच इज फिक्स तो यानी फिर उस केस में वन से लेकर फोर तक तो वही हम चाहते हैं कि नेक्स्ट में वो वन से लेकर फोर तक चले ये चीज हमें इस तरीके से लॉजिकली बिल्ड करनी पड़ती है अब देख लो जी उसके बाद हमने क्या किया j के अंदर जे वाले लूप के अंदर करंट इज इक्वल टू करंट प्लस प्रेजेंट एलिमेंट का सम अब करंट मेरा इनिशियली क्या है जीरो तो मेरा यहां ज से चलना स्टार्ट करो ये कहां तक चलेगा आपका यहां तक चलेगा तो सबसे पहले 0 + 3 3 हो गया फिर j इंक्रीमेंट हुआ j आगे अभी आ तो मेरा ऊपर ही खड़ा है j मेरा इंक्रीमेंट हुआ नेक्स्ट पे गया 8 प्लस करंट 11 नेक्स्ट अभी आगे चलेगा 2 + 11 कितना हो गया जी 13 फिर अभी जे एक और चलेगा यहां पे थ्री तक तो ये मेरा 5 + 13 कितना हो गया जी आपका 18 तो यहां पे जाके मेरा j आउट ऑफ द लूप जाएगा और जैसे ही j आउट ऑफ द लूप गया मेरी नेक्स्ट स्टेटमेंट क्या कहती है मैक्स इज इक्वल टू जो करंट और मैक्स में से जो मैक्सिमम है ये वाला एक तरह से फंक्शन क्या कर रहा है दो वैल्यूज में से जो बड़ी वैल्यू है है उसको मैक्स के अंदर डाल दो तो दो वैल्यूज कौन सी हैं एक माइ इटी है एक प्लस का 18 है तो दोनों में से ओबवियसली 18 बड़ा है तो वो हम मैक्स के अंदर डाल देते हैं हमें पहला एक तरह से पहले सबेरे का मैक्सिमम मिल गया 18 वो हमने डाल दिया जब ये डाल दिया अब i मेरा एक तरह से इंक्रीमेंट हो गया अब i जैसे ही इंक्रीमेंट हुआ आप i को यहां से चलाना स्टार्ट करो अब ओबवियसली i मेरा कहां से चलेगा वन से क्योंकि पहली बार तो चल गया अब i मेरा कहां पे है वन पे और j भी मेरा कहां पे है वन पे लेकिन ये वन से लेके कहां तक चलेगा वन से लेके ये एक्चुअल में कहां पे 1 + 4 - 1 व्हिच इज अगेन फोर यानी वन से लेके ये मेरा एक तरह से यहां से लेके यहां तक चलेगा ठीक है ना तो ये इसको चलाने के लिए फिर वही बात है दोबारा से फिर मेरा जो करंट है वो इनिश इइ जो है वो किससे होगा जीरो से हो जाएगा क्योंकि ये 18 की तो अब कोई वैल्यू ही नहीं है अब 18 की तो कोई औकात ही नहीं 18 तो हमने उधर अपडेट कर दिया अब ये छोटा होता हम इसको लेते ना तो नेक्स्ट केस में सपोज अगेन रो मेरा करंट है वो इनिश इइ कर दिया हमने रो से अब j = 1 j मेरा आ गया j1 से स्टार्ट करेगा तो 0 प्लस करंट कितना हो गया जी आप 0 + 8 क्या हो गया 8 8 + 2 क्या हो गया जी 10 10 + 5 क्या हो गया जी 15 15 + 7 क्या हो गया जी 22 अब देखेंगे जी 22 करंट है जी और मैक्स मेरा कितना था 18 दोनों में से बड़ी वैल्यू कौन सी है 22 तो वो हम मैक्स में चेंज कर देंगे तो ये मेरा क्या आ गया जी ये मेरा आ गया 22 तो इस इस तरीके से आपका जो है वो ये वर्क करेगा और फिर वही ऊपर जो है वो i हमारा जो है वो इंक्रीमेंट हो जाएगा तो i मेरा अब किस पे आ गया टू पे आ गया i जैसे ही मेरा टू पे आया तो ऑब् वियस अब हमारा जो है j j भी उसी तरीके से आपका चलेगा तो j स्टार्ट तो उसी जगह से करता है जहां से i करेगा मतलब j भी आपका टू से लेकिन चलेगा कब तक i की वैल्यू जो है प्लस जो आपका सब एरे का साइज है -1 तो टोटल आपके पास एक तरह से कितना हो गया यहां पे 6 -1 यानी पांच तक तो विंडो जो जो आपका एक तरह से एरे का इंडेक्स की अगर हम बात करें तो ये रो ये वन ये टू ये थ्री ये फोर ये फाइव यानी यहां से लेके यहां तक अब अगेन मेरा जो करंट है क्योंकि करंट की अब कोई जरूरत ही नहीं है ना ये करंट में जो 22 है इसका काम खत्म हो गया तो एक तरह से करंट यहां से दोबारा से फिर हम क्या कर देंगे करंट को जीरो से क्योंकि इसकी कोई जरूरत ही नहीं है ना अब इसीलिए तो इसका नाम करंट है कि जो एट प्रेजेंट जो आपका एट प्रेजेंट सब एरिया उसका टोटल तो करंट इनिश इइ क्या कर दिया जीरो से जीरो + 2 क्या हो गया जी 2 2 + 5 क्या हो गया जी 7 7 + 7 क्या हो गया जी आपका 14 14 + 6 क्या हो गया जी आपका 20 तो इस तरीके से आपका j जो है वो पूरा लास्ट तक चलेगा और फाइनली करंट कितना हो गया 20 फिर भाई 20 आपका करंट है और मैक्स कितना है जी आपका मैक्स है जी आपका 22 तो ओबवियसली मैक्स जो है वो 22 ऑलरेडी है ही तो इसको कुछ करने की जरूरत ही नहीं है तो आपका 22 ही रहेगा फिर हमारे पास i जो है वो ऊपर आया i जो है वो हमारा अब थ्री पे पहुंच गया i3 पे पहुंच गया तो तो j भी मेरा थ्री से चलेगा और थ्री से कहां तक 3 प्लस जो मेरा टोटल एरे का साइज है 4 - 1 व्हिच इज व्ट 7 - 1 व्हिच इज सिक्स तो यानी ये पूरा का पूरा यहां से लेके सिक्स तक चलेगा और इसके बाद तो i से भी हम बाहर निकल जाएंगे तो यहां पे जैसे ही ये चला इसने फिर भाई इनिश इइ जो है वो करंट करंट मेरा इनिशियलिज्म कितना हो गया जी 5 5 + 7 क्या हो गया जी आपका 12 12 + 6 क्या हो गया जी 18 18 + 12 क्या हो गया जी 30 दोबारा से फिर चेक करेंगे करंट क्या है जी आपका 30 और मैक्स कितना था जी 22 दोनों में से मैक्सिमम कौन सा आपका 30 मैक्सिमम है तो ओबवियसली हम मैक्स में क्या डाल देंगे 30 डाल देंगे तो ये मेरा इस तरीके से i जो है अब मतलब j पूरा हो गया उसके बाद जब दोबारा हम चले तो यहां पे मेरा जीरो से लेके थ्री तक ऑलरेडी चल गया i की वैल्यू यानी इससे भी बाहर आ जाएगा i भी हमारा आउट ऑफ द लूप रिटर्न कर दो मैक्स मैक्स क्या आ जाए 30 और ये मैंने आपको इनिशियल इज बताया ही था स्टार्टिंग में कि 30 हमारा आंसर आना चाहिए ये हमारा आ गया अब इसमें अगर हम बात करें कि लूप के अंदर हमारा एक और लूप चल रहा है तो टाइम कॉम्प्लेक्शन किस तरीके से निकालेंगे तो ऑब् वियस आप देखो सबसे पहले i जो है रो से के लेंथ ऑफ द एरे तक चल रहा है - w भी है बट w विंडो का साइज दो भी दे सकते हैं तीन भी दे सकते हैं चार तो लेंथ ऑफ़ द एरे अगर n एलिमेंट्स है तो n-2 या n-3 या n - 4 तक भी चले तब भी रहेगा तो वो n टाइम ही ना अगर n की वैल्यू बहुत बड़ी है तो n टाइम्स आपका तकरीबन तकरीबन n टाइम्स आपका i चल रहा है और हर एक वैल्यू के लिए j कितना चल रहा है j आपका जो है वो i की वैल्यू से लेके i + w - 1 अब w जो है अगर मैं w बहुत बड़ा वैल्यू ले लूं w अगर मैं लेट्स सपोज इस केस में सिक्स ले लू तो भैया यानी एक तरफ आपका जो j है वो भी तकरीबन तकरीबन आपका जो है वो पूरी की पूरी वैल्यूज तक ही चल रहा है जैसे हमारे इस एग्जांपल में हमने j जो है तकरीबन हाफ हा टाइम तक चलाया था तो n / 2 भी अगर चल रहा है तब भी n * n ओबवियसली एक वैल्यू के लिए अगर n / 2 चल रहा है दो वैल्यू के लिए n / 2 तीन वैल्यू के लिए n तो यानी n वैल्यूज के लिए n / 2 * n व्हिच इज n स् तो यानी ऑर्डर ऑफ n स् और इससे ज्यादा ही हो सकती है n / 2 से कम नहीं चलेगा n / 2 से ज्यादा भी चल सकता है वर्स्ट केस में तो आपका तो इसीलिए आपकी जो टाइम कॉम्प्लेक्शन है वो ऑर्डर ऑफ n स् तक जा सकती है और इस चीज को हम लोगों ने कैसे रिड्यूस करना है नेक्स्ट वीडियो में स्लाइडिंग विंडो जो मेथड है वह आपको बताता है कि इसको हम रिड्यूस भी कर सकते हैं लेकिन जो बेसिक अप्रोच है जो नेव अप्रोच है जो ट्रेडिशनल अप्रोच है वो इस तरीके से वर्क करती है तो नोट कर लो क्योंकि बेस भी बहुत ज्यादा इंपॉर्टेंट है और इसमें क्या चीजें हमने चेंज की वो नेक्स्ट अप्रोच में हम लोग डिस्कस करेंगे थैंक यू