चाहे web2 हो या web3, डेटा स्ट्रक्चर (data structure), एल्गोरिदम (algorithm) और LeetCode के सवालों में अच्छा प्रदर्शन करना महत्वपूर्ण है, न केवल नौकरी पाने के लिए बल्कि कंप्यूटर साइंस में एक अच्छी नींव (foundation) विकसित करने के लिए भी।
कई डेवलपर्स जानते हैं कि उन्हें LeetCode (या विकल्प के रूप में, HackerRank, Codecademy, या Codewars) की प्रैक्टिस करनी चाहिए, लेकिन अगर आपने अभी तक शुरुआत नहीं की है तो यह बहुत डरावना (intimidating) लग सकता है।
आपको किन LeetCode प्रॉब्लम्स से शुरुआत करनी चाहिए और आपको किस क्रम (order) में आगे बढ़ना चाहिए?
शुरुआत करने की मनोवैज्ञानिक बाधा (psychological barrier) को पार करना
इनमें से किसी भी वेबसाइट को खोलने, आसान (easy) मार्क की गई कोई रैंडम प्रॉब्लम चुनने और फिर उसमें फंस जाने से ज्यादा निराशाजनक (demoralizing) कुछ नहीं है। अब आपको तीन गुना ज्यादा ऊर्जा लगानी होगी: सही प्रॉब्लम ढूँढने में, उसे सॉल्व करने में, और खुद को इस बात से घबराने से रोकने में कि कहीं आपने गलत प्रॉब्लम तो नहीं चुन ली या आप इस टेस्ट के लिए बने ही नहीं हैं।
हम आपको सुझाव देते हैं कि उन LeetCode सवालों और LeetCode प्रॉब्लम्स से शुरुआत करें जिन्हें करना बेहद आसान है। नहीं सच में, यह चुनौती कैसी रहेगी?
https://leetcode.com/problems/add-two-integers/
func sum(num1 int, num2 int) int {
}
दो इंटीजर्स को जोड़ने के लिए आसान कोडिंग प्रॉब्लम
बहुत डरावना नहीं है, है ना?
भाषा (language) के मूल (core) पर ध्यान केंद्रित करना
दुनिया भर में बहुत सारे डेटा स्ट्रक्चर्स और एल्गोरिदम मौजूद हैं। trees, linked lists, heaps, queues, graphs, directed graphs, और भी न जाने क्या-क्या! विकल्पों की भरमार से परेशान होने से बचने के लिए, उन डेटा स्ट्रक्चर्स पर ध्यान केंद्रित करना सबसे अच्छा है जो लगभग सभी मॉडर्न भाषाओं में इन-बिल्ट (built-in) होते हैं।
- arrays
- strings
- nested arrays (2d arrays)
- hash table
ज्यादातर भाषाएँ आपको बिना कुछ भी इम्पोर्ट (import) किए इन डेटा स्ट्रक्चर्स का उपयोग करने की अनुमति देती हैं।
Queue या Heap जैसी चीजों का उपयोग करने के लिए, आपको किसी न किसी तरह की लाइब्रेरी (library) इम्पोर्ट करनी पड़ती है। तकनीक कितनी भी चमकदार और “नई” क्यों न हो, प्रोग्रामिंग भाषाएँ दशकों से मौजूद हैं। वे सामान्य कामों को आसान बनाने के लिए विकसित हुई हैं। यदि किसी भाषा का उपयोग करने में अधिक मेहनत लगती है, तो बाकी सब समान होने पर भी वह धीरे-धीरे अपनी लोकप्रियता खो देगी।
बाइनरी ट्री (binary tree) को मिरर (mirror) करना कोई आम बात नहीं है। लेकिन strings और arrays को मैनिपुलेट (manipulate) करना बहुत आम है, इसलिए वे भाषा में ही इन-बिल्ट होते हैं।
यदि आप किसी भाषा में ये जरूरी चीजें करना नहीं जानते हैं, तो आप उस भाषा में प्रोग्रामिंग करना नहीं जानते हैं। trees, graphs और queues जैसी चीजें सीखना किसी भाषा विशेष तक सीमित नहीं है। लेकिन अगर आप JavaScript में किसी array पर लूप (loop) नहीं चला सकते, तो आप यह नहीं कह सकते कि आपको JavaScript आती है।
हमने प्रॉब्लम्स की जो सूची तैयार की है, उसे यह सुनिश्चित करने के लिए डिज़ाइन किया गया है कि आप भाषा की बुनियादी बातों के साथ सहज (comfortable) हो जाएँ। ये प्रॉब्लम्स आपको बाद में अधिक एडवांस्ड (advanced) टॉपिक्स पर काम करने के लिए एक बेहतरीन नींव प्रदान करेंगी।
सबसे पहले लॉजिक (logic) और प्रॉब्लम-सॉल्विंग (problem-solving) पर ध्यान दें
एल्गोरिदम के नाम डरावने हो सकते हैं, आमतौर पर ये शायद ही कभी इस्तेमाल होने वाले यूरोपीय नामों और गूढ़ (esoteric) एप्लिकेशन्स का संयोजन (concatenation) होते हैं। Floyd-Warshall? Dijkstra’s algorithm? Fisher-Yates?
आप इन्हें बाद में सीखने के लिए इंतज़ार कर सकते हैं।
लेकिन आपको बुनियादी चीजें करने में पूरी तरह से सक्षम होना चाहिए जो “एल्गोरिदम-जैसी” (algorithm-y) भी नहीं हैं।
उदाहरण के लिए, अगर आपको एक टिक-टैक-टो (tic-tac-toe) ग्रिड दिया जाए, तो क्या आप बता सकते हैं कि गेम खत्म हो गया है या नहीं? इसे पूरा करने के लिए आपको किसी फैंसी एल्गोरिदम की आवश्यकता नहीं है। यदि आप इस बुनियादी काम में संघर्ष (struggle) करते हैं, तो आपको ऊपर दिए गए एडवांस्ड एल्गोरिदम के साथ बहुत कठिनाई होगी।
हमने यहाँ जो प्रॉब्लम्स लिस्ट की हैं, उन्हें सॉल्व करने के लिए किसी विशेष तकनीक की आवश्यकता नहीं है। कॉलेज-स्तर (college-level) की तकनीकों को अपनी सूची में शामिल करने से पहले, बेसिक लॉजिक (basic logic) और कॉमन सेंस (common sense) वाले सॉल्यूशंस लागू करना सीखें।
क्या ये बहुत आसान नहीं हैं?
शायद आप इसके लिए लक्षित दर्शक (target audience) नहीं हैं, लेकिन आप उन लोगों की संख्या देखकर हैरान रह जाएंगे जो खुद को डेवलपर कहते हैं लेकिन fizz buzz नहीं कर सकते। हमने यह प्रत्यक्ष रूप से (first hand) देखा है। जब आप हमारे प्रोग्राम के लिए अप्लाई करते हैं, तो आपको तुरंत एक कोडिंग टेस्ट के लिंक के साथ एक ईमेल प्राप्त होगा। उनमें से एक fizz buzz है। और उस पर फेल होने की दर (failure rate) बहुत अधिक (high) है।
शायद यह घबराहट (nerves) है और इससे पहले कभी coding test न देना इसका कारण हो सकता है। लेकिन अगर आपने कम से कम एक बार भी कोडिंग टेस्ट की प्रैक्टिस नहीं की है, तो आप अपना कोई भला नहीं कर रहे हैं।
क्या यह कोडिंग इंटरव्यू पास करने के लिए पर्याप्त है?
अगर आप इन सभी प्रॉब्लम्स को सॉल्व कर सकते हैं, तो आपको शायद नौकरी मिल सकती है! यह किसी ऐसी कंपनी में बहुत ही एंट्री लेवल (entry level) की नौकरी होगी जो बहुत अधिक चयनात्मक (selective) नहीं है। लेकिन इसके बावजूद यह संभव है।
क्या आपको इन प्रॉब्लम्स का उपयोग करने के लिए भुगतान (pay) नहीं करना पड़ता है?
हमने केवल फ्री वर्ज़न की प्रॉब्लम्स को ही शामिल किया है।
कॉपीराइट नोटिस (Copyright Notice)
अन्य सॉफ्टवेयर ट्रेनिंग प्रोग्राम्स के साथ हमें हुई साहित्यिक चोरी (plagiarism) की समस्याओं के कारण, यह पूरा काम Creative Commons NonCommercial License के तहत लाइसेंस प्राप्त है।
वॉर्म-अप्स (Warm-Ups) (Playlist)
- https://leetcode.com/problems/convert-the-temperature/
- https://leetcode.com/problems/add-two-integers/
- https://leetcode.com/problems/smallest-even-multiple/
- https://leetcode.com/problems/final-value-of-variable-after-performing-operations/
- https://leetcode.com/problems/count-of-matches-in-tournament/
- https://leetcode.com/problems/number-of-common-factors/
- https://leetcode.com/problems/xor-operation-in-an-array/
String (Playlist):
- https://leetcode.com/problems/length-of-last-word/
- https://leetcode.com/problems/to-lower-case/
- https://leetcode.com/problems/to-lower-case/ (बस इसका उल्टा करें)
- https://leetcode.com/problems/reverse-string/ (two-pointers का उपयोग न करें)
- https://leetcode.com/problems/valid-palindrome/
- https://leetcode.com/problems/count-vowel-substrings-of-a-string/ (hashmap का उपयोग न करें)
- https://leetcode.com/problems/repeated-substring-pattern/
- https://leetcode.com/problems/defanging-an-ip-address/
- https://leetcode.com/problems/determine-color-of-a-chessboard-square/
- https://leetcode.com/problems/add-digits/
- https://leetcode.com/problems/jewels-and-stones/
- https://leetcode.com/problems/roman-to-integer/
Array (Playlist):
- https://leetcode.com/problems/fizz-buzz/
- https://leetcode.com/problems/check-if-array-is-sorted-and-rotated/
- https://leetcode.com/problems/sort-an-array/ (leetcode के निर्देशों को नज़रअंदाज़ करें, built-in फीचर का उपयोग करें)
- https://leetcode.com/problems/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence/
- https://leetcode.com/problems/subtract-the-product-and-sum-of-digits-of-an-integer/
- https://leetcode.com/problems/find-first-palindromic-string-in-the-array/
- https://leetcode.com/problems/running-sum-of-1d-array/
- https://leetcode.com/problems/merge-two-sorted-lists/
- https://leetcode.com/problems/find-greatest-common-divisor-of-array/
- https://leetcode.com/problems/maximum-number-of-words-found-in-sentences/
- https://leetcode.com/problems/final-value-of-variable-after-performing-operations/
- https://leetcode.com/problems/shuffle-the-array/
- https://leetcode.com/problems/shuffle-string/
- https://leetcode.com/problems/cells-in-a-range-on-an-excel-sheet/
- https://leetcode.com/problems/minimum-sum-of-four-digit-number-after-splitting-digits/
- https://leetcode.com/problems/decompress-run-length-encoded-list/
2D Array (Playlist):
- https://leetcode.com/problems/richest-customer-wealth/
- https://leetcode.com/problems/flipping-an-image/
- https://leetcode.com/problems/lucky-numbers-in-a-matrix/
- https://leetcode.com/problems/shift-2d-grid/
- https://leetcode.com/problems/available-captures-for-rook/
Hash Table (Playlist):
- https://leetcode.com/problems/jewels-and-stones/
- https://leetcode.com/problems/decode-the-message/
- https://leetcode.com/problems/unique-morse-code-words/
- https://leetcode.com/problems/check-if-the-sentence-is-pangram/
- https://leetcode.com/problems/first-letter-to-appear-twice/
- https://leetcode.com/problems/sum-of-unique-elements/
- https://leetcode.com/problems/merge-similar-items/
- https://leetcode.com/problems/divide-array-into-equal-pairs/
- https://leetcode.com/problems/destination-city/
- https://leetcode.com/problems/number-of-good-pairs
यहाँ जो देखा वह पसंद आया? हमारा Free Solidity Course चेक करें।
मूल रूप से 8 दिसंबर, 2022 को प्रकाशित