डेटा प्रकार, बुनियादी से उन्नत तक

प्रत्येक दिन मुझे विभिन्न प्रकार की डेटा संरचनाओं और एल्गोरिदम से अवगत कराया गया। मैंने संभालना सीखा

कुछ समस्याओं में लिंक्ड सूचियां और बाइनरी पेड़ जैसी अधिक जटिल संरचनाएं शामिल थीं, जबकि अन्य ने मिश्रण में मैट्रिक्स / एनडी एरेज़ को फेंक दिया, जिससे मुझे बहुआयामी स्थानों से निपटने में मदद मिली।

समस्याओं की विविधता ने मुझे तनाव में रखा। लीटकोड के 30 दिनों के जावास्क्रिप्ट ट्रैक की समस्याओं ने मुझे

जैसी बुनियादी बातों से परिचित कराया

लीटकोड के शीर्ष साक्षात्कार 150 ट्रैक ने चीजों को एक कदम आगे बढ़ाया, मुझे अलग-अलग कठिनाई और दृष्टिकोण की समस्याओं के बीच उलझा दिया। प्रत्येक दिन इनमें से कम से कम एक को हल करना अमूल्य था। इन समस्याओं ने मुझे अनुकूलन के बारे में अधिक बार सोचने के लिए चुनौती दी और विभिन्न दृष्टिकोण रनटाइम और मेमोरी दक्षता को कैसे प्रभावित कर सकते हैं।

मुख्य अवधारणाओं की अपनी समझ को मजबूत करने के लिए मैंने इन चुनौतियों के साथ-साथ स्ट्रक्चरी सबक भी लिया। मैंने कुछ डेटा संरचनाओं को संभालने के अधिक कुशल तरीके सीखे, जैसे लिंक्ड सूचियों और बाइनरी ट्री पर अनुभाग। मैं विशेष रूप से शिक्षण के लिए मंच के गतिशील दृष्टिकोण और समस्याओं को इस तरह से विभाजित करने की सराहना करता हूं जिससे उन्हें पचाना आसान हो जाता है। यह बहुत ही बुनियादी स्तर पर डीएसए सीखने और फिर इस समझ को मेरे सामने आने वाली अन्य कोडिंग समस्याओं में अनुवाद करने का एक बेहतरीन मंच है।

दृष्टिकोण और तकनीकें

जैसे-जैसे दिन आगे बढ़े, मुझे कई तरह के समाधान दृष्टिकोण, समस्या-समाधान तकनीकों का सामना करना पड़ा, जैसे कि

मुझे अधिक कुशल समाधानों के लिए खोज स्थान को कम करके, अनुक्रमों (मुख्य रूप से सरणियों और स्ट्रिंग्स) से जुड़ी समस्याओं के माध्यम से काम करने के लिए दो-सूचक दृष्टिकोण एक सीधा लेकिन शक्तिशाली तरीका मिला। मैंने लालची एल्गोरिदम का भी उपयोग किया जहां मुझे प्रत्येक चरण में स्थानीय रूप से इष्टतम विकल्प बनाने की आवश्यकता थी।

स्लाइडिंग विंडो तकनीक एक और आंख खोलने वाली तकनीक थी - शुरू में चुनौतीपूर्ण, लेकिन उपसरणी या सबस्ट्रिंग से जुड़ी समस्याओं के लिए मूल्यवान; ऐसी समस्याएँ जिनके लिए एक अनुक्रम के भीतर तत्वों की चलती श्रृंखला पर नज़र रखने की आवश्यकता होती है। हैशमैप्स और हैशटेबल्स लगातार लुकअप से जुड़ी समस्याओं में कुंजी-मूल्य जोड़े के लिए बहुत अच्छे हैं।

मैंने जिन सबसे जटिल तकनीकों पर काम किया उनमें से एक गतिशील प्रोग्रामिंग थी। प्रारंभ में, ओवरलैपिंग उप-समस्याओं को पहचानने में कठिनाई के कारण मुझे डीपी काफी डराने वाली लगी, लेकिन बार-बार एक्सपोज़र मेमोइज़ेशन के साथ पुनरावर्ती कॉल को अनुकूलित करने में मेरा सबसे अच्छा दोस्त बन गया।

फ़ंक्शन हेरफेर (करतब। रैपर्स और प्रोटोटाइप)

मुख्य डीएसए समस्याओं के अलावा, मुझे अधिक उन्नत जावास्क्रिप्ट अवधारणाओं को आज़माने का भी मौका मिला। मैंने अपने कोड के प्रवाह को नियंत्रित करने और विशिष्ट आवश्यकताओं के लिए कार्यक्षमता बढ़ाने का तरीका सीखते हुए रैपर फ़ंक्शंस लिखे। मैंने फ़ंक्शंस पर टाइमर सेट करना भी सीखा जो मुझे समय-संवेदनशील संचालन को संभालने या कुछ फ़ंक्शंस को कितनी बार निष्पादित किया जा सकता है इसे सीमित करने की अनुमति देता है।

प्रोटोटाइप के साथ काम करने से मुझे पता चला कि कस्टम तरीके बनाकर डेटा प्रकारों को उनकी अंतर्निहित क्षमताओं से परे हेरफेर किया जा सकता है। इससे मुझे ऑब्जेक्ट और एरेज़ जैसे डेटा प्रकारों की अंतर्निहित कार्यक्षमता को नए तरीकों से विस्तारित करने की अनुमति मिली। मैं स्वच्छ, मॉड्यूलर कोड लिखने के महत्व की सराहना करने लगा।

मैंने मेमोइज़ेशन भी सीखा, एक ऐसी तकनीक जहां आप किसी फ़ंक्शन को इस तरह संशोधित करते हैं कि यह पहले कहे गए तर्कों को उनके परिणामों के साथ संग्रहीत करता है! यह एक प्रकार की कैशिंग है जो उन समस्याओं में प्रदर्शन को बेहतर बनाने में मदद करती है जहां एक ही फ़ंक्शन पर एकाधिक कॉल होती हैं। मैंने अपने मेमोइज़ समाधान के बारे में यहां लिखा है जो 99% (मेमोरी) को हरा देता है: मेमोइज़ इंट्यूटिव सॉल्यूशन 99% मेमोरी को हरा देता है।

परीक्षण एवं अनुकूलन

इस यात्रा के दौरान एक और चीज़ जिस पर मैंने अधिक ध्यान देना शुरू किया, वह थी मेरे कोड का अनुकूलन। स्ट्रक्चरी पर बिग-ओ नोटेशन के उचित परिचय के बाद, मुझे समय और स्थान की जटिलता का महत्व समझ में आया और मैंने अधिकांश सामान्य समस्याओं के लिए इष्टतम तकनीक सीखी। हैकररैंक चैलेंज ट्रैक के अंत में, मैंने कक्षाओं का उपयोग करके कोड का परीक्षण करना और जेनरिक लिखना भी सीखा।

ले लेना

जब तक मैंने 30 दिनों की कोड चुनौती पूरी कर ली, मुझे विकास की गहरी अनुभूति महसूस हुई। इसने कई प्रकार की समस्याओं को संभालने की मेरी क्षमता में सुधार किया और जावास्क्रिप्ट और डीएसए के बारे में मेरी समझ को गहरा किया। समस्याओं को हल करने से कहीं अधिक, यह एक महीने लंबी यात्रा मेरे लिए एक अनुस्मारक थी कि मैं वास्तव में प्रयास कर सकता था। निरंतरता और अनुशासन के पुरस्कारों को देखकर, मुझमें आत्मविश्वास और तकनीकों के एक मजबूत टूलकिट के साथ किसी भी चुनौती का सामना करने की मानसिकता का नवीनीकरण हुआ है।

यह अनुभव मेरी प्रोग्रामिंग यात्रा में एक महत्वपूर्ण मील का पत्थर है। इन 30 दिनों में मैंने जो कौशल निखारा है, वह निस्संदेह एक सॉफ्टवेयर इंजीनियर के रूप में मेरे करियर में आगे बढ़ेगा।

प्रयास करने के लिए मुझे खुद पर गर्व है, और अपने दोस्तों का आभारी हूं जिन्होंने मुझे प्रोत्साहित किया और चुनौती के दौरान अपना समर्थन और ज्ञान प्रदान किया।

\\\"#aysofCode

","image":"http://www.luping.net/uploads/20241006/172818757367020cb51a890.jpg","datePublished":"2024-11-07T22:11:52+08:00","dateModified":"2024-11-07T22:11:52+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > #aysofCode सितंबर: डीएसए मास्टरी तक मेरी यात्रा

#aysofCode सितंबर: डीएसए मास्टरी तक मेरी यात्रा

2024-11-07 को प्रकाशित
ब्राउज़ करें:270

इस सितंबर में, मैंने एक स्वयं-लगाई गई 30 दिनों की कोड चुनौती शुरू की, जो हर दिन कम से कम दो डेटा संरचनाओं और एल्गोरिदम (डीएसए) समस्याओं को हल करने की प्रतिबद्धता है। मेरा लक्ष्य खुद को अपने आराम क्षेत्र से बाहर निकालना, निरंतरता बनाना और अपने समस्या-समाधान कौशल और प्रोग्रामिंग तर्क में सुधार करना था।

मैं सिर्फ एक मंच तक ही सीमित नहीं रहा - मैंने हैकररैंक के 30 दिनों के कोड चैलेंज, लेटकोड के 30 दिनों के जावास्क्रिप्ट प्लान को पूरा किया, और लेटकोड के टॉप इंटरव्यू 150 ट्रैक को भी निपटाया, जो तैयारी कर रहे किसी भी व्यक्ति के लिए 150 विशिष्ट साक्षात्कार समस्याओं का एक संग्रह है। कोडिंग साक्षात्कार. इसके अतिरिक्त, मैंने डीएसए अवधारणाओं पर अपनी पकड़ को और मजबूत करने के लिए स्ट्रक्चरी पर कुछ पाठ लिए।

मैंने अधिकांश समस्याओं को जावास्क्रिप्ट का उपयोग करके हल किया (कुछ हैकररैंक समस्याओं को छोड़कर जहां जावास्क्रिप्ट समर्थित नहीं थी, इसलिए मैंने इसके बजाय पायथन का उपयोग किया)। खुद को जवाबदेह बनाए रखने में मदद करने के साथ-साथ अपनी प्रगति को साझा करने के लिए, मैंने हर दिन हल की गई चुनौतियों को ट्विटर पर पोस्ट किया। आप उन्हें इस उद्धरण चिह्न में पा सकते हैं:

डेटा प्रकार, बुनियादी से उन्नत तक

प्रत्येक दिन मुझे विभिन्न प्रकार की डेटा संरचनाओं और एल्गोरिदम से अवगत कराया गया। मैंने संभालना सीखा

  • सरणी
  • स्ट्रिंग्स
  • ऑब्जेक्ट्स
  • मानचित्र
  • सेट
  • नंबर
  • बूलियन, और भी बहुत कुछ।

कुछ समस्याओं में लिंक्ड सूचियां और बाइनरी पेड़ जैसी अधिक जटिल संरचनाएं शामिल थीं, जबकि अन्य ने मिश्रण में मैट्रिक्स / एनडी एरेज़ को फेंक दिया, जिससे मुझे बहुआयामी स्थानों से निपटने में मदद मिली।

समस्याओं की विविधता ने मुझे तनाव में रखा। लीटकोड के 30 दिनों के जावास्क्रिप्ट ट्रैक की समस्याओं ने मुझे

जैसी बुनियादी बातों से परिचित कराया
  • सरणी परिवर्तन
  • कार्य परिवर्तन
  • बंद
  • कक्षाएं
  • JSONs
  • वादे और समय।

लीटकोड के शीर्ष साक्षात्कार 150 ट्रैक ने चीजों को एक कदम आगे बढ़ाया, मुझे अलग-अलग कठिनाई और दृष्टिकोण की समस्याओं के बीच उलझा दिया। प्रत्येक दिन इनमें से कम से कम एक को हल करना अमूल्य था। इन समस्याओं ने मुझे अनुकूलन के बारे में अधिक बार सोचने के लिए चुनौती दी और विभिन्न दृष्टिकोण रनटाइम और मेमोरी दक्षता को कैसे प्रभावित कर सकते हैं।

मुख्य अवधारणाओं की अपनी समझ को मजबूत करने के लिए मैंने इन चुनौतियों के साथ-साथ स्ट्रक्चरी सबक भी लिया। मैंने कुछ डेटा संरचनाओं को संभालने के अधिक कुशल तरीके सीखे, जैसे लिंक्ड सूचियों और बाइनरी ट्री पर अनुभाग। मैं विशेष रूप से शिक्षण के लिए मंच के गतिशील दृष्टिकोण और समस्याओं को इस तरह से विभाजित करने की सराहना करता हूं जिससे उन्हें पचाना आसान हो जाता है। यह बहुत ही बुनियादी स्तर पर डीएसए सीखने और फिर इस समझ को मेरे सामने आने वाली अन्य कोडिंग समस्याओं में अनुवाद करने का एक बेहतरीन मंच है।

दृष्टिकोण और तकनीकें

जैसे-जैसे दिन आगे बढ़े, मुझे कई तरह के समाधान दृष्टिकोण, समस्या-समाधान तकनीकों का सामना करना पड़ा, जैसे कि

  • रिकर्सन
  • दो-सूचक
  • हैशमैप
  • हैश तालिका
  • लालची एल्गोरिदम
  • द्विआधारी खोज
  • स्लाइडिंग खिड़की
  • गतिशील प्रोग्रामिंग
  • कैशिंग (संस्मरण), और भी बहुत कुछ।

मुझे अधिक कुशल समाधानों के लिए खोज स्थान को कम करके, अनुक्रमों (मुख्य रूप से सरणियों और स्ट्रिंग्स) से जुड़ी समस्याओं के माध्यम से काम करने के लिए दो-सूचक दृष्टिकोण एक सीधा लेकिन शक्तिशाली तरीका मिला। मैंने लालची एल्गोरिदम का भी उपयोग किया जहां मुझे प्रत्येक चरण में स्थानीय रूप से इष्टतम विकल्प बनाने की आवश्यकता थी।

स्लाइडिंग विंडो तकनीक एक और आंख खोलने वाली तकनीक थी - शुरू में चुनौतीपूर्ण, लेकिन उपसरणी या सबस्ट्रिंग से जुड़ी समस्याओं के लिए मूल्यवान; ऐसी समस्याएँ जिनके लिए एक अनुक्रम के भीतर तत्वों की चलती श्रृंखला पर नज़र रखने की आवश्यकता होती है। हैशमैप्स और हैशटेबल्स लगातार लुकअप से जुड़ी समस्याओं में कुंजी-मूल्य जोड़े के लिए बहुत अच्छे हैं।

मैंने जिन सबसे जटिल तकनीकों पर काम किया उनमें से एक गतिशील प्रोग्रामिंग थी। प्रारंभ में, ओवरलैपिंग उप-समस्याओं को पहचानने में कठिनाई के कारण मुझे डीपी काफी डराने वाली लगी, लेकिन बार-बार एक्सपोज़र मेमोइज़ेशन के साथ पुनरावर्ती कॉल को अनुकूलित करने में मेरा सबसे अच्छा दोस्त बन गया।

फ़ंक्शन हेरफेर (करतब। रैपर्स और प्रोटोटाइप)

मुख्य डीएसए समस्याओं के अलावा, मुझे अधिक उन्नत जावास्क्रिप्ट अवधारणाओं को आज़माने का भी मौका मिला। मैंने अपने कोड के प्रवाह को नियंत्रित करने और विशिष्ट आवश्यकताओं के लिए कार्यक्षमता बढ़ाने का तरीका सीखते हुए रैपर फ़ंक्शंस लिखे। मैंने फ़ंक्शंस पर टाइमर सेट करना भी सीखा जो मुझे समय-संवेदनशील संचालन को संभालने या कुछ फ़ंक्शंस को कितनी बार निष्पादित किया जा सकता है इसे सीमित करने की अनुमति देता है।

प्रोटोटाइप के साथ काम करने से मुझे पता चला कि कस्टम तरीके बनाकर डेटा प्रकारों को उनकी अंतर्निहित क्षमताओं से परे हेरफेर किया जा सकता है। इससे मुझे ऑब्जेक्ट और एरेज़ जैसे डेटा प्रकारों की अंतर्निहित कार्यक्षमता को नए तरीकों से विस्तारित करने की अनुमति मिली। मैं स्वच्छ, मॉड्यूलर कोड लिखने के महत्व की सराहना करने लगा।

मैंने मेमोइज़ेशन भी सीखा, एक ऐसी तकनीक जहां आप किसी फ़ंक्शन को इस तरह संशोधित करते हैं कि यह पहले कहे गए तर्कों को उनके परिणामों के साथ संग्रहीत करता है! यह एक प्रकार की कैशिंग है जो उन समस्याओं में प्रदर्शन को बेहतर बनाने में मदद करती है जहां एक ही फ़ंक्शन पर एकाधिक कॉल होती हैं। मैंने अपने मेमोइज़ समाधान के बारे में यहां लिखा है जो 99% (मेमोरी) को हरा देता है: मेमोइज़ इंट्यूटिव सॉल्यूशन 99% मेमोरी को हरा देता है।

परीक्षण एवं अनुकूलन

इस यात्रा के दौरान एक और चीज़ जिस पर मैंने अधिक ध्यान देना शुरू किया, वह थी मेरे कोड का अनुकूलन। स्ट्रक्चरी पर बिग-ओ नोटेशन के उचित परिचय के बाद, मुझे समय और स्थान की जटिलता का महत्व समझ में आया और मैंने अधिकांश सामान्य समस्याओं के लिए इष्टतम तकनीक सीखी। हैकररैंक चैलेंज ट्रैक के अंत में, मैंने कक्षाओं का उपयोग करके कोड का परीक्षण करना और जेनरिक लिखना भी सीखा।

ले लेना

जब तक मैंने 30 दिनों की कोड चुनौती पूरी कर ली, मुझे विकास की गहरी अनुभूति महसूस हुई। इसने कई प्रकार की समस्याओं को संभालने की मेरी क्षमता में सुधार किया और जावास्क्रिप्ट और डीएसए के बारे में मेरी समझ को गहरा किया। समस्याओं को हल करने से कहीं अधिक, यह एक महीने लंबी यात्रा मेरे लिए एक अनुस्मारक थी कि मैं वास्तव में प्रयास कर सकता था। निरंतरता और अनुशासन के पुरस्कारों को देखकर, मुझमें आत्मविश्वास और तकनीकों के एक मजबूत टूलकिट के साथ किसी भी चुनौती का सामना करने की मानसिकता का नवीनीकरण हुआ है।

यह अनुभव मेरी प्रोग्रामिंग यात्रा में एक महत्वपूर्ण मील का पत्थर है। इन 30 दिनों में मैंने जो कौशल निखारा है, वह निस्संदेह एक सॉफ्टवेयर इंजीनियर के रूप में मेरे करियर में आगे बढ़ेगा।

प्रयास करने के लिए मुझे खुद पर गर्व है, और अपने दोस्तों का आभारी हूं जिन्होंने मुझे प्रोत्साहित किया और चुनौती के दौरान अपना समर्थन और ज्ञान प्रदान किया।

#aysofCode September: My journey to DSA Mastery

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/akcumeh/30daysofcode-september-my-journey-to-dsa-mastery-647?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3