Hi everyone and welcome to the complete DSA series जिसके अंदर आज हम करने वाले अपना next chapter which will be regarding arrays. अब DSA concepts में अगर इसके अलावा आपको कोई और भी topic पढ़ना है तो वीसी चानल के उपर इस playlist के अंदर हमें available मिल जाएगा. हम चाहें तो यहां से जाकर भी पढ़ सकते हैं. Now when we talk about arrays, it is basically the first data structure that we are going to study. तो जब हम data structures and algorithms को पढ़ने वाले हैं, तो सबसे पहले जान लेते हैं what exactly are data structures and algorithms.
So when we talk about data structures, data structures are basically structures in our code when we are programming, which are used to store data. हम जो coding, programming सारी चीज़ें सीख रहे हैं, इसके पीछे का एक ही motive है that we will be able to build real life systems one day. और जब भी हम real life systems की बात करते हैं, जैसे हमारी websites हो गई, हमारे apps हो गई, हमारी softwares हो गई, हर कोई जो system होता है, it is run on data, data is the fuel for development, for coding, for programming, तो data को handle करना हमें आना चाहिए, तो basically coding के अंदर programming करते हुए, C++ का code लिखते हुए, अगर हमें किसी तरीके की बहुत सारी information store करानी होती है, तो हम उसे store कराते हैं in the form of different different data structures, और ये data अलग अलग category का हो सकता है, कुछ data हो सकता है linear हो कुछ data हो सकता है hierarchical हो, hierarchical कहने का मतलब है इस तरीके की उस data के अंदर hierarchy जो है वो form होती है, तो अलग-अलग type का जो data होता है उसे हम अलग-अलग data structures के अंदर store कराते हैं, तो धीरे-धीरे throughout the series we are going to discover a lot of different types of data and also different types of data structures, इसके साथ में एक और word है जो मैं बार-बार सुनने को मिले जैसे for example किसी data structure से अगर हम data को find out करना चाते हैं search करना चाते हैं उसके अंदर data तो search करने का जो process होगा उसको हम algorithm कह सकते हैं अगर उस data को हम sort करना चाते हैं यानि उसे ascending या descending order में arrange करना चाते हैं तो उसके लिए हमारे पास अलग algorithms होगी इसी तरीके से data के उपर जो हम different different operations perform करते हैं इनी operations को we call our algorithms और throughout this series we are going to study a lot of different data structures and algorithms तो सबसे पहले let's talk about what an array is जब भी हमें code के अंदर let's suppose हमें 5 students के marks store कराने है तो इन marks को अभी existing C++ knowledge के साथ हम कैसे store कराएंगे obviously हम कुछ variables को create करेंगे यह हमारा marks 1 variable हो जाएगा यह हमारा marks 2 variable हो जाएगा यह हमारा marks 3 variable हो जाएगा and similarly we are going to create 5 different variables that are going to store marks of 5 students पर कल को situation ये भी आ सकती है कि हमारी class के अंदर 5 students नहीं है, हमारी class के अंदर 100 students है, तो क्या 100 students के mark store कराने के लिए we are going to create 100 different variables, अब ये 100 different variables हम create तो करते हैं, पर इसमें दो problems है, सबसे पहला it's going to be very hectic for a programmer to create 100 different variables, and secondly it's going to be very difficult to track 100 different variables in a code, and that is why, और ये number सिफ 100 पे नहीं रुकता, for example हम अब Instagram के अंदर हमारे पास millions of users हैं तो क्या हर user का data हम एक अलग variable के अंदर store कराएंगे बिलकुल भी नहीं तो इस problem को resolve करने के लिए हमारे पास आता है array data structure array कहता है कि हम कुछ इस तरीके का structure build कर सकते हैं arrays को हम इस तरीके से visualize करते हैं कि हम कुछ इस तरीके का structure build कर सकते हैं जिसको we imagine like a block of data and इसके हर एक structure के अंदर हम कुछ ना कुछ information है जिसे store कर सकते हैं पूरे structure को हम नाम दे देते हैं array and इस पूरे structure का एक single नाम होता है which is a single variable that we need to track अब यहाँ पर क्योंकि मुझे 5 students के marks store कराने थे मैंने क्या किया 5 size का structure बिल्ड कर दिया लेकिन कल को मुझे 100 students के marks भी store कराने पड़े तो कुछ नहीं करना बस मुझे एक बड़ा structure जो है उसे बिल्ड करना है पर इस पूरे structure को different different variables के नाम नहीं देंगे इस पूरे structure का एक ही नाम होगा तो arrays जो हैं हमारी multiple variables वाली problem को resolve करते हैं, अब जब भी हम array की बात करते हैं, array के साथ कुछ-कुछ specific properties हैं जो आती हैं, सबसे पहला array के अंदर हम same type का data ही store करा सकते हैं, अगर इस block of code के अंदर हम integer कराना चाहते हैं, तो हर एक single block of code के अंदर हम एक integer value को store करवाएंगे, additionally, arrays are contiguous, इन मेमिरी, यह जो चीज है, यह हम pointers वाला chapter पढ़ेंगे, तो हमें और जादा समझ में आएगी, पर basically जब arrays memory के अंदर create होते हैं, तो वो data जो है एक साथ store होता है, सारा का सारा data एक साथ store होता है, प्लस arrays are also linear, linear मतलब जो भी हमारा array होता है उसको हम straight line structure, इस तरीके से एक के बाद एक data arrange करने वाले structure की तरह imagine कर सकते हैं, अब let's suppose मुझे 5 students के marks store करवाने हैं, तो मैं अपने लिए एक array create कर सकती हूँ, जिसको मैं कहे दूँगी marks, मुझे marks 1, marks 2, marks 3 इस तरीके से variable बनाने की ज़ of size 5, सिर्फ इतना लिखना होता है मुझे एक array को create करने के लिए, सबसे पहले मुझे बताना होता है कि array का हर एक जो block है, वो किस type का data store कराएगा, तो उसमें integer value हमने लिख दी, उसके बाद हमें अपने variable का नाम बताना होता है, जो की marks होने वाला है, मतलब पूरे array को हम marks कहेंग size बता रहे होते हैं, it's very similar to creating a normal variable, अगर मुझे integer variable भी बनाना होगा, तो मैं लिखती marks 1, बस यहाँ पर single marks 1 की जगे, इस बार मुझे size बताना है, total number of blocks का और यह जो हर block होता है यह जो memory occupy करती है, वो एक integer के बराबर memory occupy करता है इसके अंदर भी एक int store हो सकता है इसके अंदर भी एक int store हो सकता है इसके अंदर भी एक int store हो सकता है तो सारे का सारा जो area है, same type of data store करता है, plus Contiguous in memory होने का क्या मतलब है? Contiguous in memory होने का मतलब है, let's suppose इस block का address है 100, अगर हम 100 bytes की form में देख रहे हैं, तो मुझे पता है कि ये block of code अगर 100 से start होगा, अगर ये block 100 से start होगा, तो ये वाला block 4 bytes की memory लेगा, तो next जो block of code है, वो 104 से start होगा, फिर ये दुबारा 4 bytes की memory लेगा, फिर next block and similarly this block is going to start from 116 तो इस तरीके से continuous manner में data जो है वो memory के अंदर जाकर store हो रहा है ऐसा नहीं है data बिखरा हुआ है data इसी तरीके से contiguous manner में store होता है contiguous मतलब continuous manner और linear यह है क्योंकि हमने straight line के अंदर अपने data को imagine कर लिया है तो एक बार अपने code के अंदर एक array को create करते हैं array को create करने के लिए हमें array का type बताना होता है then we need to convey the array name marks and इसमें हम 5 students के marks store कराना चाहते हैं अगर कल को हम 100 students के marks store कराना चाहें, तो हम simply इस 5 को replace कर सकते हैं with 100. अगर हमें एक double array बनाना है, let's suppose हमारे पास 100 items हैं, या हमारे पास 65 items हैं, तो हम हर एक item का price store करा सकते हैं, तो इस तरीके से we need to create a price array, जिसका size होने वाला है 65 के equal. अब array को create करने के multiple तरीके हैं, जिसमें हमने array का सिर्फ size बताया है, तो इस तरीके का array memory के अंदर create हो गया होगा, elements नहीं है अभी अगर हमें ऐसा array define करना है जिससे हम initialize भी कर दें with some values तो उसे हम कैसे define करेंगे उसे define करने के लिए हम simply लिख सकते हैं अपने code के अंदर integer marks is equal to और इस तरीके से curly braces के अंदर हम अपनी 5 जो values हैं उनको assign कर सकते हैं तो let's suppose first student के marks है 99 then 100 54, 36 and 88 तो इस तरीके से 5 जो students के हमने marks जैसे ही store कर दिये तो हर एक box के अंदर, यहाँ पर 99 आकर store हो जाएगा, यहाँ 100 store हो जाएगा, यहाँ 54, 36 and 88, तो इस तरीके का array हमारी memory के अंदर create हो गया होगा, also जब हम arrays को कुछ data के साथ initialize करते हैं, और हम चाहते हैं कि array का size is data के ही equal होना चाहिए, तो हम चाहें तो left side से अपने size को skip कर सकते हैं, जैसे let's suppose मैंने array create किया price, और price के अंदर मुझे तीन ही items का price store कराना है, एक हो गया 98.99, एक हो गया 105, 0.67, let's make it of type double, and एक हो गया हमारे पास 30.00 तो इस तरीके से हमने जैसे ही तीन items को store करा दिया automatically हमारे जो price array है ये memory के अंदर तीन size का create हो गया, लेकिन जब हम इस तरीके से array को initialize करते हैं, ज़रूरी नहीं है यहाँ पर अगर मैंने 50 लिख दिया तो memory के अंदर जो array create होगा वो 50 size का create होगा, बस उसके शुरुआती 5 values हमने already define कर दिये होंगे तो हम चाहें तो we can give a size or if the size is equivalent to the data on the right side then we don't really need to give a size तो इस तरीके से हम अपने array को create करते हैं और उसे हम data के साथ initialize भी कर सकते हैं अब जब भी हमें array का data access करना होता है access करने का मतलब है जब भी हम array के किसी भी एक जगे पर किसी भी एक box में जाकर data को change करना चाते हैं उस data को print करना चाते हैं तो उसके लिए we use something called array index Index का मतलब होता है position, array के अंदर जो हर एक box है उसकी एक assigned fixed position है, array की जो positions होती हैं वो start होती हैं 0 से, यह जो box है यह 0th position पर है, यह box first position पर है, यह second पर है, third पर है, fourth पर है, और यहां से हमें logic समझ में आएगा कि क्यों हमने for loop की जब practice की थी, तो उसमें अपने loops को हम 0 से start कर रहे थ तो हमें अगर in data structures के उपर कोई loop लगाना होता है, then we need to start that loop from this index value 0, तो वो थोड़ा सा simpler loop हो जाता है, तो अगर हम लिखते हैं marks at index 0, हम इस तरीके का square bracket लगाते हैं, और अंदर कोई index value लिखते हैं, तो मतलब हम इस position की बात कर रहे हैं, अगर हमने लिख दिया marks at index 3, तो मतलब हम इस position की बात कर रहे हैं, array के जो index हैं, हमेशा 0 से लेकर size-1 तक जाते हैं, तो इस array का size है 5k equal, and last जो index होगा, that is equal to 4, यानि size-1, तो एक बार index को use करके देखते हैं, code के अंदर, in our marks array, we have created this marks array, जिसमें 5 हमारे पास different-different marks हैं, हम चाहें तो cout कर सकते हैं, किसी भी position के उसके साथ में हम चाहें तो सारी positions के marks different different index values को access करके print करवा सकते हैं, तो हमने यहाँ पर print करा दिया तो सारे के सारे ही हमारे पास marks print हो कर आ गए, and यह जो हमारा marks bracket index है, इसे basically अब हम एक single variable की तरह treat कर सकते हैं, जैसे let's suppose मुझे अगर value change करनी हुई, marks 0 को 99 की जगए हम करेंगे अगर 101, तो वो करना भी possible है, तो जब हम marks को print करवाएंगे, तो हमारे पास 101 print होकर आएगा, अब हमें पता है कि array के लिए जो valid index होता है, वो हमेशा 0 से size-1 तक जाता है, तो अगर हमने size के बाहर का, let's suppose हमने 5th index पे value print करवाने की कोशिश की, तो उस case में हमारे पास एक warning आने वाली है, warning जो 0 से चोटा होगा तो इस तरीके से हमें हमेशा limit के अंदर ही array की values को access करना है अगर हम invalid index लिखते हैं तो हमारे पास garbage values आ सकती है next हम सीखने वाले हैं कि कैसे अपने array के उपर हम एक loop run कर सकते हैं अब array के उपर जब हम एक loop run करते हैं जैसे for example यहाँ पर हमने elements को print करवाया by writing 5 cout statements पर generally अगर array का size 100 होगा तो हम 100 see out statements नहीं लिखेंगे, तो generally array के उपर operations perform करने के लिए हम loops का use करते हैं, और loops का use कैसे करते हैं, हम एक loop चलाते हैं, जो array के index 0 से लेकर index size-1 तक जाता है, तो 0 से लेकर size-1 के loop के लिए हमें size की ज़रूरत होगी, तो array का size या तो generally हमें already given होता है in a variable called size, या फिर हम उसे calculate भी कर सकते हैं, calculate कैसे करेंगे, लेट सपोस मुझे अगर अपना size calculate करना है, तो उसे हम करते हैं by writing size of, तो इससे हमें पूरे array का size मिल जाएगा, size of mark से क्या होता है, अगर हमारे पास ये array है, तो ये array total कितनी bytes of memory occupy करता है, हमें उसका total size मिल जाएगा, जिसे for example, ये जो हमारे array है, इसमें एक box 4 bytes of memory occupy करता है, और तो जो हमारा size of marks है या size of array है ये basically हमें 20 bytes print करवा कर देगा इसको हम verify भी कर सकते हैं अगर हम c out करें size ऑफ मार्क्स तो उस केस में वियर गोइंग टू गेट 20 यह 20 आ गया अब यह तो टोल एरे का साइज हो गया लेकिन हमें पता है हर एक एरे के इंडेक्स पर इंटीजर के बराबर मेमरी है तो इस वाल्यू को जब हम डिवाइड कर देते हैं तो हमारे पास एरे का साइज आ जाता है विच इग्ल टू फाइव तो इस तरीके से किसी भी एरे का हम नाम लिखते हैं उसका एक और वीरिबल के अंदर हमें already given होता है, पर हम चाहें तो खुद से भी calculate कर सकते हैं, अब हमें एक loop चलाना है, जो 0 से size-1 तक जाए, तो हम basically अपना एक loop चला सकते हैं, जो 0 से start होता है, i is equal to 0, i less than size तक जाता है, i++, बहुत simple ये loop है, हमने काफी सारे loops किया हुए pattern के अंदर, और हर बार हम चाहें तो see out करा सकते हैं, marks के अंदर, index number i पर जो भी value है वो, index की value पहले 0 होगी, उस तरीके से marks of 0, marks of 1, marks of 2, हमारे पास print होकर आ जाएं और अगर हम इसे प्रिंट करते हैं, तो इस तरीके से हमारे पास सारे एलेमेंट्स प्रिंट होकर आ जाएंगे, तो यह तो हमने output करा दिया सारी की सारी values को loop से, हम चाहें तो सारी values को input भी ले सकते हैं in the form of a loop, तो let's suppose हमने initialize नहीं किया अपने array को, हमने सिर्फ बता दिया कि ह और यहाँ पर हम see in कर सकते है marks of i को, तो marks of i, marks of index, basically अब एक variable है, जिसको input किया जा सकता है, output किया जा सकता है, change किया जा सकता है, तो हम जो 5 marks की value enter करेंगे, वो हमारे area के अंदर जाकर store हो जाएगी, और वही हमारे लिए आकर print हो जाएगी, तो save कराके, इसे run कराते हैं, let's suppose हमने जो value enter की, it is 12, 13, 14, 15, and 16, यह 5 values हमने enter की, तो यही 5 values हमारे पास print हो करा गई, तो इस तरीके से हम एक array के ऊपर loop चला सकते हैं, और एक-एक array का जो index है, एक-एक array का जो index है, वहाँ जाकर हम अपने required operations को perform कर सकते हैं, तो अब next loops को use करके एक छोटा सा सवाल solve करते हैं, based on arrays, we have to find out the smallest and the largest number in an array, example के लिए शुरुवात में सिर्फ हम smallest number find out करेंगे, जैसे let's suppose हमारे पास यह हमारा एक array है, we have 15, we have 22, है विशाब वन विशाब माइनस 15 एंड विशाब 24 इस तरीके से हमारे पास डिफरेंट वैल्यूज है और इसमें स्मॉलेस्ट वैल्यू निकालनी है अब स्मॉलेस्ट वैल्यू निकालने के लिए हमें पता है कि हमें एरे के हर एक सिंगल next पर जाएंगे, check करेंगे, ये smallest value है क्या हमारे पास, next index पर जाएंगे, और same चीज हम check करते चले जाएंगे, जब तक हम area के last index तक नहीं पहुंच जाते हैं, अब जब भी हमें check करना है कि कोई भी value smallest value है क्या, उसे मुझे किसी value से compare करना पड़ेगा, तो हम क्या कर सकते हैं, ए तो कोई भी value जब इस value से compare करेगी, जैसे 5 और plus infinity को हम compare करेगी, तो smallest कौन सा होगा, smallest obviously 5 होगा, तो 5 ही answer के अंदर आएगा, जब बाद में जाके 1 को compare किया जाएगा 5 के साथ, यहाँ पे जब 5 आ जाएगा, 1 को compare करेंगे 5 के साथ, तो दुबारा 1 क्या करेगा, 1 5 से small होगा, जब भी smallest निकालना होता है, comparisons की शुरुवात हम largest possible number से करते हैं, ताकि यह number हारे ही हारे हर comparison में, क्योंकि हम नहीं चाहते कभी भी ये answer हो, हम चाहते हैं दूसरा कोई valid answer हमारे पास निकल कर आए, तो plus infinity को programming के अंदर, C++ के अंदर हम कहते हैं integer underscore max, ये capital में लिखते हैं हम पूरा uppercase के अंदर, और इसका मतलब होता है plus infinity in C++, plus infinity कहने का मतलब है largest possible value for any integer number, उसी को हम plus infinity कहेंगे, 5 को compare करेंगे, अब 5 को जब हम compare करेंगे plus infinity से obviously 5 छोटा होगा और यह में कैसे पता चलेगा या तो हम एक if else use कर सकते हैं यानि अगर हमारा जो भी हमारे numbers हैं let's call this array nums अगर nums of i की value किसी भी index पे nums of i की value अगर छोटी हो जाती है smallest से smallest यानि जो भी हमारा answer है तो हम क्या कर देंगे smallest को हम update करके कर देंगे nums of i I hope यह logic हमें समझ में आया होगा कि जैसे ही plus infinity से चोटी कोई value मिल जाती है, तो smallest में क्या आ जाएगा, smallest में वो चोटी value आ जाएगी, जैसे यहाँ पर हमारे पास आ जाएगा 5, अब next time जब हम update करेंगे, तो 15 को अब इस 5 से compare किया जाएगा, क्योंकि अब smallest में तो हमारे पास 5 है, और numbers of 5 15 है, तो 15 less than 5 नहीं होता, तो हमें कोई operation perform नहीं करना, 22 को 5 से compare करेंगे, कोई operation perform नहीं करना, फिर 1 को हम 5 से compare करेंगे, तो 1 5 से चोटा है, तो यहाँ पर 5 को अटा कर हम answer के अंदर लिख देंगे 1, क्योंकि यह condition work करेगी, उसके बाद हम index को बढ़ा देंगे minus 15, minus 15 1 से भी चोटा है, तो यहाँ पर हमारे पास minus 15 आ जाएगा, फिर से दुबारा index को बढ़ा देंगे, क्योंकि हमें end तक check करने की ज� तो minus 15 चोटा है तो वो वैसे का वैसा रहेगा, और final answer कहाँ पर होगा, final answer is smallest variable के अंदर होगा, which is going to be equal to minus 15, तो यह जो पूरा logic है, इसे एक बार code के अंदर convert करते हैं, सबसे पहले तो let's create an array called nums, nums के अंदर हमारी पास different different numbers जो हैं वो stored हैं, 5, 15, 22, 1, minus 15 and 24, इन numbers हमारे पास stored हैं, इसका size भी हम साथ में लिख लेते हैं, size is going to be equal to 6, अब अगर हमें smallest निकालना है, तो उसे कहीं पर किसी variable के अंदर हम store कराएंगे, तो smallest को हम initialize करते हैं with int max, यानि positive infinity तो अब एक loop चलाएंगे for integer i equal 0, i less than size, i plus plus, हर बार हम compare कर लेंगे, अगर nums of i की value less than है हमारे smallest से, मतलब दोनों में से जो भी छोटा है, अगर smallest छोटा है, तब तो कोई change नहीं करना, पर अगर nums of i छोटा हो गया, तब smallest की value update हो जाएगी to nums of i, and last में जाकर loop खतम होने के बाद हम print करवा सकते हैं, smallest is equal to, smallest value end of line, इसे run करेंगे तो हमारे पास answer आएगा minus 15 के equal, अगर यहाँ पर minus 15 की ज़य के minus 24 होता, तो उस case में our answer would have been minus 24, so this is how we calculate the smallest value with the help of a loop inside an array, और सिर्फ smallest नहीं, हम चाहें तो largest, हम चाहें तो sum of all values, product of all values, basically कोई भी ऐसा operation जिसमें हमें required होता है, कि हम हर एक index पर जाएं और उस ची तो उसके लिए हम इस तरीके से अपने loops को use कर सकते हैं, also एक और चीज़ जो मैं आपको सिखाना चाहूँगी यहाँ पर, that is the min function, basically हमारे पास दो functions होते हैं C++ के अंदर, called min and max, जब भी हमें दो numbers का minimum find out करना होता है, तो उसके लिए हम min को use कर सकते हैं, जैसे for example मुझे पता करना है कि, nums of i and smallest में से छोटी value कौन सी है, यह implicit function है, यह already हमारे पास available होता है, तो ये min function है जिसके अंदर हम दो arguments pass करते हैं, nums of i and smallest, और ये हमें return करेगा वो value जो छोटी है, और जो भी छोटी value होगी, उसे हम अपने smallest के अंदर लिख सकते हैं, तो ये जो पूरा if हमने लिखा है, इसको लिखने का shorter तरीका है, ये एक single statement, जिसमें हम अपने min function को use कर सकते हैं, और ये हमें minimum of these two values return करेगा, जिसको हम smallest के अंदर store करा देंगे, तो ये भी जो तरीका है, ये हमें same answer जो है वो return करके देगा, So this was the logic for finding the smallest value.
अगर हमें largest value find out करनी है तो सारी चीजों को बस reverse करना है. Basically इस बार हम एक variable ले लेंगे integer largest. जैसे हमने smallest को plus infinity के साथ initialize किया था. इस बार हमारा जो largest होगा उसे हम initialize करेंगे, अपने largest को initialize करेंगे with minus infinity. क्योंकि हम चाहते हैं largest किसी भी number के साथ compare करें तो हमेशा दूसरा number जीते हैं.
तो larger को हम सबसे छोटी possible value बनाएंगे, कि ये कभी जीत ही न पाए, जब comparisons हो रहे होते हैं, and minus infinity is int min in C++, तो यहाँ पर we are going to write int min, अब int min जो है, इसके हम comparisons करेंगे, तो यहाँ पर जब हम comparisons कर रहे हैं, फॉर लूप में, तो smallest के साथ largest find out कर सकते हैं, as max of nums of i and largest, और last में smallest and largest दोनों को हम print करवा सकते हैं, तो basically largest find out करने के लिए, मुझे कोई अलग से loop नहीं लगाना, मैं single loop के अंदर दोनों values को find out कर सकती हूँ, क्योंकि eventually चाहे smallest निकालना हो, चाहे largest निकालना हो, हम जा तो एक एक index पर रहे हैं न, तो इस particular area के लिए, smallest value minus 24 हो गई, largest value हमारे पास 22 निकाल कर आ गई, तो इस तरीके से smallest and largest values को हम find out कर सकते हैं, यहाँ पर pause करके एक homework problem आपको solve करनी है, basically what you have to do is, आपको smallest and largest values, जिस index पर stored हैं, उस index को print करवाना है, तो this is one thing that you have to do, कि इस बार value नहीं, जैसे अगर minus 15 smallest है, तो मुझे minus 15 का index चेहिए, which is equal to 4, तो मुझे इस 4 को print करवाना है, मुझे minus 15 को print नहीं करवाना है, यह हम कैसे print करवाएंगे, उसके लिए किस तरीके से values को initialize करेंगे, क्या comparison होंगे वो आपको खुद से सोचने की जरूरत है तो ये चीज मैं आपको as a homework problem दे रही हूँ next जो हम चीज study करने वाले हैं इसे हम कहते हैं pass by reference अब pass by value को हमने already देखा था functions वाले chapter के अंदर हमने pass by value पढ़ा था और pass by value का मतलब है जो भी हमारे primitive data types के variables होते हैं उनको अगर हम argument की तरह किसी function को pass करते हैं let's suppose ये मेरा main function है जिसके अंदर मैंने कोई variable बनाया x जिसके अंदर value stored है 10 और main function अगर किसी दूसरे function को call कर रहा है विजिस चेंज एक्स तो उसके अंदर इस एक्स की एक और कॉपी बनने वाली है जिसको मैं अलग कलर से हाइलाइट कर देती हूं और उसके अंदर यही जो सेम वाल्यू है यह कॉपी होकर आएगी अब अगर यहां पर हम कोई चेंज करते हैं 10 की जगह अगर हम 15 कर देते हैं और addresses यह जो reference का पूरा concept है यह हमें और जादा detail में pointers वाले chapter के अंदर समझ में आएगा, so when we talk about pass by reference what do we exactly do, pass by reference में हम क्या करते हैं, pass by reference में पूरा हमारा जो data structure होता है, अहिसे हम non primitive data types के लिए use करते हैं, जैसे array जो है, array एक non primitive data type है, primitive का मतलब होता है simple, arrays उतने simple नहीं होते हैं memory क एक तरीके से हम address pass कर देते हैं किसी भी function को, और जब भी आपके पास किसी भी चीज़ का address हो ना programming के अंदर, मतलब आप उसमें जा कर, उसी same original copy के अंदर जा कर आप changes कर सकते हैं, जैसे हमारे जो arrays होते हैं, जब भी हम किसी function को अपना array pass करेंगे, तो array हमेशा pass by reference ही होगा, implicitly, automatically, जैसे let's take an example of a simple array, integer array है हमारे पास, of size 3, जिसके अंदर values है 1, 2, 3, अब अगर हमने एक function मनाया, let's call it void, change array, change array के अंदर हमारे पास एक integer array आएगा, और उस integer array का हमारे पास size आएगा, और हम क्या करेंगे इस function के अंदर, i equal 0 से लेकर i less than size, i plus plus, हम अपने array के हर index पर value को double कर देंगे, उसे हम कर देंगे 2 into array of i, तो यहां से हम function call करेंगे, अपना change, change array, जिसके अंदर array पास कर देंगे, size पास कर देंगे as 3, और यहाँ पर अब हम इसी तरीके का एक loop चलाएंगे, जिससे array की values को print करवाएंगे, तो यहाँ पर हम cout करा देते हैं, in main, और यहाँ पर cout करा देते हैं, in function, तो यहाँ पर size हो जाएगा 3 के equal, और यहाँ पर हम cout कराएंगे अपना area of i, एंड ऑफ लाइन, तो इस code को जब हम run करेंगे, तो interesting चीज हमें यह देखने को मिलेगी, कि array के original elements थे 1, 2, 3, फिर change array को call किया गया, change array ने हर element को double कर दिया, अब इस function में तो double हो जाएंगी values, पर जैसे ही main function के अंदर हम वापस आएंगे, pass by value होता तो क्या होता, हमारी original values रहती 1 वो main function के अंदर भी reflect कर रहा है, and इसी को कहते हैं, हम pass by reference, क्योंकि internally क्या हुआ है, internally जब हमने अपना एक array create किया, अपना array हमने memory के अंदर जब create किया, तो इस तरीके का 3 size का array create हुआ, जिसके अंदर 1, 2, 3 stored था, अब यह जो array है, इसका let's suppose, हमारे पास address है 100, 104, 108, तो interesting चीज, कि array का जो नाम होता है, name होता है, वो implicitly एक pointer होता है, pointer क्या होते हैं, बाद में सीखेंगे, पर basically pointers, एक ऐसी चीज होती है जो address को store कराता है address मतलब ये जो array है, मतलब ARR, जो मेरे array का नाम है ये basically इस hundred value को store कराता है, ये अपने पूरे के पूरे array के starting address को store कराता है, और कभी भी अगर आपको starting address मिल जाए, अगर आपको hundred मिल जाए, और आपको पता है integer array तो उसमें 4 add करके आप 104 निकाल लोगे next index उसमें 4 add करके आप 108 निकाल लोगे next index, उसमें 4 add करके आप 112 निकाल लोगे next index, तो कभी भी अगर हमारे पास starting index आ जाए एरे का, तो हम पूरे एरे को traverse कर सकते हैं, अगर हमारे पास एरे का type भी आ जाए और एरे का size भी आ जाए, तो यहाँ पर starting address कौन store कराता है, starting address एरे का जो change array को call लगाई तो change array के अंदर ये पूरी की पूरी copy जाके दुबारा नहीं बनती है वो तो change by value हो जाएगा array की cases में क्या होता है इसका जो ये starting address होता है ये यहाँ पे आता है इस नए array के अंदर जिसमे starting address 100 है तो जब भी हम अपने change array function के अंदर address पे जाके change करेंगे तो ये address कहाँ पे ये address original array पर तो पास बाय रेफरेंस का मतलब होता है हम रेफरेंस बेज रहे हैं मतलब यह अड्रेस बेज रहे हैं विच इज द स्टार्टिंग अड्रेस यहां भी ओरिजिनल के अंदर रिफ्लेक्ट करेगा तो तो सीप्लेस के अंदर रिफ्लेंस का मतलब होता है या पास बाय रिफ्लेंस का मतलब होता है कि हम original के अंदर सारे की सारे जो changes हैं वो कर रहे होते हैं तो कभी भी किसी function को हम अपना area pass करते हैं उसे बड़े सोच समझ के pass करना है क्योंकि उस function ने अगर कोई changes कर दिये तो वो हमारी main function या calling function के अंदर भी reflect कर रहे होंगे तो I hope pass by reference का concept हमें समझ में आया होगा एक fixed algorithm होता है, linear search को करने का तरीका भी fixed होता है, for example हमारे पास यह array है, इस array को visualize भी कर देते हैं, memory के अंदर यह array कुछ ऐसा दिखाई देगा, जिसके अंदर we have different elements 8, 1, 2 and 5, तो इस तरीके से हमारे पास different different elements हैं, और यहाँ पर, यहाँ से हमारा array जो है वो start हो रहे हैं, अपनी index values अब अगर इस तरीके का हमें array दिया जाता है, साथ के साथ हमें एक target दिया जाता है कि इस target value को मुझे इस array के अंदर search करना है, और जिस भी index पर वो value मिलेगी, मुझे उस index को return करना है, तो यह हमारे पास एक simple सी problem है, जो हमें दी गई है, अब यह जो problem है, इसे solve करने के multiple तरीके exist करते हैं, तो हमें basically अपने array पर एक search operation को perform करना है, जो search operation हमें अगर value मिल जाए, तो उस case में हमें index return कर दे, और let's suppose अगर यहाँ पे 8 की जगह 80 होता, अब 80 तो इस पूरे area के अंदर कहीं exist नहीं करता, तो उस case में minus 1 return करना चाहते हैं, minus 1 return करने का मतलब है invalid index, क्योंकि minus 1 कोई index होता ही नहीं, अगर 0 से 6 तक करेंगे तो valid index होगा, minus 1 का मतलब है invalid index, minus 2 भी हो सकता था, minus 5 भी हो सकता था, अगर value मिल जाए तो index return कर दो, नहीं तो minus 1 return कर दो, तो हमें basically इस target value को, अपने पूरे के पूरे array के अंदर search करना है, अब search करने के multiple तरीके हैं, पर इन मेंसे एक algorithm जिसको हम use करते हैं search करने के लिए, it is called linear search algorithm, linear search algorithm बहुत simple है, linear search algorithm कहती है, कि search करने का क्या तरीका अपना हो, एक loop लगा दो, और loop में बार बार index पे जाके check करो, कि क्या इस index पे मेरा target exist क क्या यहाँ पे मेरा target exist करता है, और जैसे target exist करता हो, मिल जाए, 8 को search कर रहे थे, 8 मिल गया, तो अब जिस भी index पर हो, इसकी value return कर दो, तो अब index 3 पर है, तो हम 3 की value को return कर देंगे, पर let's suppose हमें 80 search करना होता, यहाँ भी exist नहीं करता, जैसे हम last index पर पहुँचे, उस case में हमें minus 1 को return करना है, तो इसका overall flow कैसा रहेगा, क्या logic रहेगा हमारा, कि हम linear search को perform कर पाएं, बहुत simple logic होने वाला है, in fact, linear search जो है, linear search, one of the most simple algorithm है, सबसे easy algorithm है programming की linear search, कुछ नहीं करना हमें एक loop चलाना है, for integer i equal 0, i less than size, i plus plus, एक loop चलाना है, अब हर बार मुझे check करना है, जहां पर भी, मेरा area of i है, क्या यहां पर मेरा target exist करता है, तो चेक करने के लिए लिखेंगे, if my array of i equals my target, तो मतलब यहाँ पर यह value अगर सच होगी, तब तो मुझे match मिल गया, तब तो simply क्या करना है, जिस index पर हूँ, उस index की value को return करना है, जैसे for example, if I am on this index, यहाँ पर target match कर गया, तो मुझे value 3 को return करना है, और index क्या है, index है i के equal, तो मुझे simply, यहाँ से मैं return कर सकती हूँ, i, हम एक function बना सकते हैं, जिसका return type integer है, that is why I am using the return i statement नहीं तो आप main function के अंदर कर रहे हैं तो आप simply break भी कर सकते हैं और कोई extra variable answer लेकर उस answer के अंदर i को store करवा सकते हैं but मैं function use करने वाली हूँ because it's going to be simpler तो यहां से मैंने return कर दिये i को अगर यह match नहीं होता तो आगे तो automatically loop हमें बढ़ा ही देगा हम last index तक आ गए और फिर भी मुझे मेरा target 80 नहीं मिला, तो उस case में मुझे पता है, मुझे minus 1 return करना पड़ेगा, तो simply यहाँ पर last में आके, हम return कर देंगे minus 1, और यहाँ last में हम तब ही पहुँचेंगे, जब कोई भी i return नहीं हुआ होगा, कि return statement के बाद कोई execution नहीं होता, तो जैसे यह return i हो गया होगा, और यह statement तक हम कभी पहुँचेंगे, तो अगर return i हो गया, मतलब answer return हो गया, पर अगर return i नहीं हुआ, तो उस case में हमने यहां last में आकर minus 1 को return किया है, तो यह जो पूरा को पूरा logic है, इसे एक बार अपने linear search के code के अंदर convert करते हैं, linear search के code के लिए, we are going to write a function called integer linear search, linear search में एक तो हमारे पास हमारे एक area आने वाला है, प्लस उस area का हमारे पास size आने वाला है, तो हम अपने area को create कर सकते हैं यहाँ पर, integer array is going to be equal to 4, 2, 7, 8, 1, 2 and 5 और इसका जो size है, that is going to be equal to 2, तो यहां से हम linear search algorithm को call करेंगे, इसमें अपना array और अपना size हम पास करेंगे, अब यह जो algorithm है, इसके लिए हम एक loop चलाते हैं, for integer i equal 0, i less than size, i plus plus, कभी भी अगर हमारा array of i की value हमारे target की equal हो जाती है, linear search के लिए हमें target भी send करना पड़ेगा, तो एक 8 और यहाँ पर हमारे पास एक और parameter आएगा target अगर area of i की value target की equal हो गई मतलब यहाँ पर हमें value मिल गई we have found the value and यहाँ से we are going to return the index which is equal to i पर यह पूरा loop चल गया फिर भी हमें value नहीं मिली तो उस case में हम return करने वाले है minus 1, minus 1 indicates that we have not found the value तो जो भी answer return हो कर आएगा उसे linear search को जब हम call करेंगे तो हम directly उसे see out करा सकते हैं end of line also इस size को update करके कर देते हैं 7, क्योंकि size 2 नहीं होगा, size 7 के equal है, अब जब हम इसे run करेंगे, तो हमारे पास index print होकर आ जाएगा 3 के equal, similarly let's suppose we want to search for this 5, तो 5 को जब हम search करेंगे, target को 5 बना लेते हैं, तो इस case है we are going to get index 6, which is the last index of this array, if we try to search for 50, इस case में हमारे पास minus 1 print होकर आएगा, linear search का basic funda यह कहता है कि हर एक index पर जाना है और अपने target को search करने की कोशिश करनी है, तो इसे पूरे logic के उपर हमारी पूरी algorithm work करती है, also the students were already familiar with the concept of time complexity, time complexity अगर आपको already आती है, वैसे नहीं आती है तो बाद में जाके हम पढ़ेंगे, पर जिन students ने already की हुई है linear search algorithm की time complexity होती है big लीनियर होती है, बिग ओफ एन लीनियर टाइम कमलेक्सिटी होती है, तब ही इसको हम लीनियर सर्च कहते हैं, जैसे हमारे पास लीनियर सर्च होता है, बाद में जाकर हम एक और एरे के अंदर सर्च करने का तरीका पढ़ेंगे, जिसे हम बाइनरी सर्च कहते हैं, बाइनरी सर तो we have been given this array और हमें इस array के सारे elements को reverse करना है यानि हमारा जो final array निकल कर आना चाहिए उसके अंदर सारे elements इस तरीके से reverse order में होनी चाहिए तो elements अगर 4278125 हो रहे थे तो अब वो reverse order में 4278125 हो रहे होगे और यह जो change है उसके लिए हमें एक second array, copy array नहीं बनाना हमें original array के अंदर ही यह change करना है मतलब original array के ही elements इस तरीके से reverse होनी चाहिए तो इस चीज को, इस problem को हम किस तरीके से solve करेंगे, तो solve करने से पहले एक बार अपने array के जो सारे elements हैं, उन्हें हम visualize कर लेते हैं, in the form of our array structure, तो इस तरीके का हमारा array है, जिसके सारे elements को मुझे reverse करना है, अब reverse करने के बहुत सारे different तरीके होते हैं, जिसमें से we are going to use something called two-pointer approach, और two-pointer approach ऐसा नहीं है कि, ऐसी चीज़ है जो हम सिर्फ इसी सवाल के लिए use करेंगे 2.8 approach एक काफी important approach है इसको हम एक algorithm की तरह सोच सकते हैं जिसको हम आगे के chapters के अंदर भी use करेंगे in fact जो logic हम इस सवाल को solve करने के लिए use करेंगे वो बहुत important logic है उसी same logic से हम strings के भी काफी सारे सवाल solve करेंगे and कई सारी algorithms के अंदर same logic apply होता है in fact binary search algorithm के अंदर भी almost same logic apply होता है अब हमें चाहिए कि हमारा array जो है वो reverse हो जाए reverse array में यह जो starting वाला element है, यह basically last position पर आ जाए, और last position वाला जो element है, वो starting position पर आ जाए, तो array reverse होगा, similarly यह जो second position वाला element है, यह second last position पर आ जाए, और second last वाला second position पर आ जाए, similarly जो third number पर element है, यह third last position पर आ जाए, और third last position वाला यहाँ पर आ जाए, तो क्यों ना हमारा जो first and last element है, इन दोनों को हम swap करते हैं swap करने का मतलब होता है elements को एक दूसरे से बदल देना एक दूसरे से बदल देना मतलब यहाँ पर तो 5 आ जाए और इस 5 की जगह हमारे पास 4 आ जाए तो इसको हम swapping कहते हैं और दो values को swap करने के लिए हमारे पास एक swap function होता है C++ के अंदर जिसके अंदर सबसे पहले हम अपनी value 1 पास करते हैं फिर अपनी value 2 पास करते हैं तो इस जो दोनों values हैं यह एक दूसरे से बदल जाती है तो हम क्यों ना first and last value को swap कर दें उसके बाद second and second last value को हम swap करेंगे, तो यहाँ पर हमारे पास 2 आ जाएगा, यहाँ पर भी हमारे पास 2 आ जाएगा, फिर हम third एंड थर्ड लास्ट वैल्यू को स्वाप करेंगे तो यहां पर हमारे पास वन आ जाएगा यहां पर हमारे पास सेवन आ जाएगा एंड फिर हम यहां पर आएंगे सिमिलरली हम यहां पर आएंगे अब यहां पर क्योंकि एक वैल्यू है तो इसको हमें तो यह हमारा फाइनल स्टेट आएगा आफ्टर स्वॉपिंग द पेर्स जिसमें अगर हम नोटिस करें तो हमारा पूरा पूरा एरे जो है वह रिवर्स हो गया है 5218724 सिमिलरली 5218724 तो हमें basically क्या करना है हमारी overall approach क्या है कैसे इस problem को solve करेंगे हम दो position से start करेंगे एक position होने वाली है हमारी starting position एक position होने वाली है हमारी ending position यह जो start है इसको मुझे बार बार एक से बढ़ाना है फिर यह second हो जाएगा फिर यह third position पे आएगा फिर यह fourth position पे आएगा या फिर क्या हम क उसके बाद ये starting index update होकर 1 हो जाएगा, उसके बाद ये starting index update होकर 2 हो जाएगा, तो start क्या हो सकता है, start मेरा एक variable हो सकता है, इसी variable को मैंने यहाँ पर क्या कह दिया है, अपना एक pointer कह दिया है, तो start की जो value है, वो हम शुरू करेंगे 0 के साथ, क्योंकि ये एक ऐसा variable है, जो 0 से श और मेरा जो ending variable है, उसकी value घटती चली जाएगी, last में ending value क्या है, this is index 0, 1, 2, 3, 4, 5 and 6, तो ending value 6 है, उसके बाद next iteration में ending value 5 हो जाएगी, उसके बाद next iteration में ending value 4 हो जाएगी, तो मेरा end जो है, वो basically, मेरे size minus 1 से start हो रहे है, मतलब last index से, हर बार मुझे start को तो करना है plus plus, तब ही तो start आगे की तरफ बढ़ेगा, और end हमारा पीछे की तरफ बढ़ेगा, तो अगर मेरे पास एक start है, मेरे पास एक end है, तो मुझे क्या करना है, दोनों की values को swap करना है, तो मुझे बार बार swap करना है, अपना array of start को, with array of end, ये मेरा एक operation है, swapping values at two different positions, इसी को हम two pointer approach कहते हैं, two pointer मतलब start and end हम दो pointers ले रहे हैं, एक को हम forward चला रहे हैं, दूसरे को हम backward चला रहे हैं, और फिर हम कुछ काम कर रहे हैं, काम क्या कर रहे हैं, काम कर रहे हैं values को swap करने का, पर ये काम हमें कब तक करना है, कब तक values को swap करते रहना है, हमने देखा कि हमारा start जब आगे आगे जाएगा, हमारा end जब पीछे पीछे चार values हैं, मेरे पास एक array है जिसके अंदर तीन values हैं, यहाँ पर यह मेरा start हो गया, यह मेरा end हो गया, next iteration में क्या होगा, start यहाँ पर आ जाएगा, end यहाँ पर आ जाएगा, next iteration में क्या होगा, start तो यहाँ पर आ जाएगा, and end यहाँ पर आ जाएगा, तो basically next iteration में start जो है, वो मेरे end से भी आगे निकल जाएगा, एक तो यह case हो सकता है, दूसरा case हो सकता है, यह मेरा start है, यह मेरा end है, नेक्स्ट आइटेरेशन में स्टार्ट भी यहीं आ जाएगा, एंड भी यहीं आ जाएगा, तो ओड वाले केस में मुझे अपने स्वापिंग को तब रोकना है जब मेरे स्टार्ट मेरे एंड के इक्वल हो जाए, और इवन वाले केस में मुझे अपनी स्वापिंग को तब तो हमें तब तक swapping करनी है, जब तक ये दोनो conditions सच नहीं हो जाती, तो इन दोनो conditions का reverse क्या होगा, इन दोनो conditions को अगर mix करें, तो it is basically start greater than equal to end, जब start greater than equal to end हो जाए, तब हमें रुक जाना है, तो loop कब तक चलना चाहिए, loop तब तक चलना चाहिए, while my start is less than my end, जब तक start की value end से कम नहीं तो values दोबारा से original में reset होनी start हो जाएंगी, तो यह हमारी overall approach होने वाली है to reverse an array, in fact इसे हम dry run भी कर सकते हैं on an array, इस तरीके का अगर हमने array लिया, जिसके अंदर कुछ elements हैं, 1, 2, 3 and 4, अब यहां से हमने अपने start को start किया with value 0, तो यहां से हमने अपने end को start किया with value equal to 3, अब हम check करेंगे क्या हमारा start less than end है, क्या यह start less than end है, definitely है तो मुझे दोनों की values को swap कर देना है तो start पर value थी 1 तो अब end पर 1 आ जाएगा, start पर मेरे पास 4 आ जाएगा, उसके बाद मुझे यह क्या करना है, उसके बाद मुझे start को तो plus plus करना है, end को minus minus करना है, तो वही same काम हम loop में भी लिख सकते हैं, कि अपने start को तो कर देंगे हम plus plus, and end को हम कर देंगे minus minus, start को plus plus किया मतलब, start की value अब update होकर, 0 से हटकर 1 हो जाएगी, तो यहाँ पर 0 को हटा कर हम 1 कर देंगे, end को minus minus किया मतलब, end की value update होकर, अब 3 से हटकर, टू हो जाएगी अब दोबारा से लूप के अंदर जाकर चेक करेंगे कि start less than end है start is less than end तो दोबारा से values को swap करेंगे इस वार values को swap किया तो यहाँ पर 2 की जगे 3 आ जाएगा यहाँ पर 3 की जगे 2 आ जाएगा उसके बाद दोबारा से मुझे start को plus plus करना है end को minus minus करना है start जैसे तो ये मेरा start होगा, जो इस index पर आएगा, और मेरा end इस index पर आएगा, जहाँ पर इसकी value update होकर हो जाएगी, 1 के equal, start पहले 1 था, बढ़के 2 हो गया, end पहले 2 था, घटके 1 हो गया, अब दोबारा check करेंगे loop के अंदर, क्या start less than end है, start अब less than end नहीं है, मतलब अब मुझे कोई operation तो इस तरीके से हम अपनी किसी भी given array को reverse कर सकते हैं with this particular logic, और यह logic होता है हमारा two pointer approach का जिसमें हम इन दोनों pointers को use करते हैं, यह logic important है क्योंकि आगे आने वाले chapters के अंदर इसी same logic पर based on कई सारी different algorithms and कई सारे different सवाल solve करने वाले हैं, तो एक बार इस logic के लिए अपना code लिखते है reverse array के अंदर we are going to pass our array along with the size of the array, तो two pointer approach के लिए सबसे पहले हम एक start बनाना पड़ेगा, तो start is going to be 0 and end is going to be size-1, हम एक loop चलाएंगे जब तक हमारे start की value less than size है, क्योंकि equal to हमें यहाँ पर लिखने की ज़रूरत नहीं है, किस case में less than equal to लिखना है, equal to क्यों नहीं लिखना equal to इसलिए नहीं लिखना क्योंकि start और end equal सर्फ उसी case में होंगे जब हमारे array का size odd होगा array का size odd होने का मतलब है जब let's suppose मेरे array के अंदर 3 elements होंगे तो पहले start यहाँ पर होगा end यहाँ पर होगा next time start यहाँ पर आ जाएगा और जब start बड़ा हो गया end से तो loop सिर्फ तब तक चलेगा जब तक start less than size है यहाँ पर अगर हम equal to लिख दें, तो कोई as such error नहीं आएगा, पर उसकी ज़रूरत नहीं हमें, logically, हमें हर बार क्या करना है, हमें swap करना है, array of start को with array of end, यहाँ पर start less than end आएगा, not less than size, and start को हर बार हम कर देंगे plus plus, end को हम हर बार कर देंगे minus minus, तो यह हमारा पूरा logic हो गया to reverse an रिवर्स एरे जिसके अंदर अपना एरे पास करेंगे और फिर हम प्रिंट करवाने वाले हैं अपने एरे के एलेमेंट्स को फंक्शन को कॉल करने के बाद साइज आई प्लस प्लस सी आउट एरे ऑफ आई विच सम स्पेस आए यहां पर सी आउट कर लेते हैं हम इस तरीके का हमारा पूरा पूरा लॉजिक होने वाला है और इसे रन करेंगे तो हमारे पास एलेमेंट्स रिवर्स ऑडर में आए हैं यह हमारा original array था, elements reverse order में, अगर यहाँ पर let's suppose, हमारे पास values होती, 1, 2, 3, 4 and 5, array का size हो जाता, 5 के equal, तो इस बार इसी का opposite, 5, 4, 3, 2, 1, हमारे पास print हो करा था, तो इस तरीके से किसी भी array को हम reverse कर सकते हैं, जिन students को time complexity का idea है, for this particular logic, the time complexity is also going to be linear, which is bigger of n, तो bigger of n में हमारे code का work करता है, तो finally बात कर लेते हैं, about the summary, इस chapter के अंदर वैसे हमने सिर्फ array का introduction किया है कुछ basic चीज़ें सीखी हैं आने वाले chapters के अंदर array से related हम बहुत सारे सवाल solve करने वाले हैं और in fact कुछ ऐसे सवाल हैं जो सिर्फ array के अंदर नहीं आगे जाकर हम hashing का concept पढ़ेंगे तो hashing को जब हम पढ़ेंगे तब हम एरेस के सवाल सॉल्व करेंगे या आगे जाकर हम डाइनमिक प्रोग्रामिंग पढ़ेंगे तब हम एरेस से रिलेटेड सवाल सॉल्व करेंगे तो एरेस ऐसा डाइनमिक प्रोग्रामिंग पढ़ेंगे जो जरूरी नहीं है उसका सिर्फ एरेस से ही रिलेटेड सवाल आएगा किसी और डाइनमिक प्रोग्रामिंग या किसी और एलगॉर्धम से मिलकर भी एरेस का सवाल आ सकता है तो यह चीज़ है जो हमें पता हो नहीं input and output कर सकते हैं हम loops कैसे run कर सकते हैं arrays के उपर, array के अंदर loop की help से कैसे हम minimum, कैसे हम maximum को find out कर सकते हैं, also हमने आज linear search को cover किया है and किस तरीके से हम एक array के elements को reverse कर सकते हैं यह सारी की सारी important चीज़ें हैं जिनका हमें पता होना चाहिए अब जब भी किसी भी coding platform के उपर जाकर यह generally कभी भी हमारे coding test होते हैं online assessments होते हैं, OAs होते हैं companies के लिए, तो वहाँ पर तो instead of array, generally सवालों के अंदर हमें vector use करना होता है, vectors are very similar to array, बिलकुल array की तरह काम करते हैं, vector के अंदर भी हम index को use करते हैं, बिलकुल array की तरह almost create होते हैं, बस array और vector के अंदर एक छोटा सा difference होता है, तो coding platforms हो गये, जैसे lead code हो गया, जैसे code forces हो गया, जैसे code shift हो गया, इनके उपर सवालों को solve करने के लिए हमें vectors का आना जरूरी है, vector use होता है, इसलिए platforms के ऊपर सवाल सॉल करने से पहले हमारा vectors को सीखना बहुत ज़रूरी है, तो इसलिए next chapter के अंदर हम vectors को सीखेंगे and उसके बाद हम सीखने वाले हैं कि किस तरीके से different different coding platforms के ऊपर जाकर हम अपने different data structures and algorithms के सवालों को solve कर सकते हैं also at the end of this chapter I would like to give you some homework problems write a function to calculate sum and product of all numbers in an array, ये बहुत simple होने वाला है simple सा loop चलाना है write a function to swap the maximum and minimum number of an array ये भी बहुत simple होने वाला है, write a function to print all the unique values in an array, इस सवाल को solve करने के लिए आपको nested loop का use करना पड़ सकता है, तो ये सवाल थोड़ा सा आपको difficult लग सकता है as a beginner, तो unique values कहने का मतलब है कि अगर हमें कोई array दिया होगा, 1, 2, 3, 1, 2, 3 and 4, तो इसमें अकेली unique value है 4, जिस value को मुझ तो basically अगर हम इस index के लिए check करना चाहें, तो इस index के लिए बचे हुए array पर हमें loop चलाना पड़ेगा, कि 1 जो है, बचे हुए array के अंदर 1 दुबारा repeat तो नहीं करता, same चीज for 2, 2 के लिए हमें check करना पड़ेगा, कि बचे हुए array में 2 दुबारा repeat तो नहीं करता, similarly 4 के लिए हम check करेंगे, 4 repeat नहीं करता, मतलब यह unique है, जरूरी नहीं है, एक ही unique element हो, array के अंदर multiple unique values हो सकती हैं, यह जो logic है as a beginner थोड़ सा hard लगेगा, पर फिर भी इसको solve करने का ज़रूर ट्राइ करना है, क्योंकि वो हमारी nested loop की and logical understanding को improve करेगा, next is to write a function to print intersection of two arrays, for example, मुझे एक array दिया है, 1, 2, 3, 4, 5, and दूसरा array दिया है, 6, 7, 3, 1, अब मुझे intersection find out करना है, मतलब दोनो arrays के मुझे common elements को print करवाना है, इसके लिए भी हमें एक nested loop वो use करना पड़ेगा, वैसे nested loop जो हम use कर रहे हैं, सबसे optimized तरीका नहीं है इन problems को solve करने का, आगे जाके हम hash table के बारे में पढ़ेंगे, तो hash table से इन दोनों सवालों को हम और असान तरीके से solve कर सकते हैं, पर अभी के लिए हमें पता नहीं hash table क्या होती है, hashing क्या होती है, तो अभी के लिए आपको nest तो ये चार सवाल हैं which you can solve as part of your homework problem तो I hope कि आज के chapter से Aries के बारे में काफी सारी चीज़ें हमें सीखने को मिली होगी जिनको हम next classes के अंदर apply कर रहे होंगे हमने finally अपने data structures and algorithms की journey को शुरू कर दिया है हम चाहें तो इस chapter and next chapter से अपने notes को बनाना start कर सकते हैं तो आज आपने successfully अगर इस chapter को complete कर लिया है you can also share your progress on twitter जिसका link भी आपको नीचे description box के अंदर मिल जाएगा आज के लिए इतना ही मिलते हैं next lecture के अंदर till then keep learning and keep exploring