JavaScript के साथ LeetCode: कहाँ से शुरू करें और दूसरी समस्या पर कैसे न छोड़ें
\n\nLeetCode सिर्फ समस्याओं वाली वेबसाइट नहीं है। JavaScript डेवलपर के लिए, यह लॉजिक का एक असली जिम है जो "मुझे सिंटैक्स आता है" को "मैं समस्याएँ हल कर सकता हूँ" में बदल देता है। लेकिन कई शुरुआती पहली Medium समस्या के बाद ही LeetCode छोड़ देते हैं। क्यों? क्योंकि LeetCode पर JavaScript समस्याएँ फ्रेमवर्क के ज्ञान की नहीं, बल्कि एल्गोरिदमिक सोच की माँग करती हैं। इस लेख में, मैं बताऊँगा कि सिस्टमेटिक तरीके से कैसे आगे बढ़ें, पहले कौन से टॉपिक सीखें, और ऐसा कोड कैसे लिखें जो इंटरव्यू में दिखाने लायक हो।
\n\nयह लेख शैक्षिक पोर्टल pythonlib.ru के लिए लिखा गया है — यहाँ हम कठिन विषयों और सरल व्याख्याओं को पसंद करते हैं। चलिए शुरू करते हैं।
\n\nJavaScript के लिए LeetCode ही क्यों?
\n\nफ्रंटएंड और Node.js बैकएंड की दुनिया में, LeetCode पर JavaScript समस्याएँ उम्मीदवारों की जाँच के लिए डी-फैक्टो मानक बन गई हैं। Google, Amazon, Meta — सभी समान एल्गोरिदमिक सेक्शन का उपयोग करते हैं। लेकिन यह सिर्फ इंटरव्यू के बारे में नहीं है। समस्याएँ हल करके, आप:
\n\n- \n
- साफ और कुशल कोड लिखना सीखते हैं \n
- डेटा स्ट्रक्चर को अंदर से समझते हैं \n
- एल्गोरिदम की जटिलता (Big O) पर "समझ" विकसित करते हैं \n
- एरे, स्ट्रिंग और ऑब्जेक्ट के साथ काम करने का डर खत्म करते हैं \n
और सबसे महत्वपूर्ण — JavaScript में एल्गोरिदम हल करना आपको अधिक आत्मविश्वासी बनाता है। जब आप 10 मिनट में एक फंक्शन लिख सकते हैं जो बिना लैग के लाखों रिकॉर्ड प्रोसेस करता है, तो कोड के प्रति आपका नजरिया बदल जाता है।
\n\nकहाँ से शुरू करें: शुरुआती के लिए सीखने की योजना
\n\nकई लोग Hard लेवल की समस्याओं पर सीधा हमला करने की कोशिश करते हैं और जल्दी थक जाते हैं। सबसे अच्छी रणनीति सरल से जटिल की ओर जाना है। यहाँ एक सिद्ध योजना है जो मैं pythonlib.ru के छात्रों को सुझाता हूँ।
\n\nचरण 1. सिंटैक्स की मूल बातें (यदि आपने अभी JS सीखना शुरू किया है)
\n\nLeetCode में कूदने से पहले, सुनिश्चित करें कि आपको निम्नलिखित अच्छी तरह से आते हैं:
\n\n- \n
- डेटा टाइप और टाइप कन्वर्जन \n
- फंक्शन, एरो फंक्शन, क्लोजर \n
- एरे मेथड्स:
map,filter,reduce,forEach\n - ऑब्जेक्ट और
Map/Setके साथ काम करना \n - Spread ऑपरेटर और डिस्ट्रक्चरिंग \n
इसके बिना, एक साधारण समस्या भी पीड़ादायक हो जाएगी। उदाहरण के लिए, "Two Sum" समस्या (LeetCode पर सबसे लोकप्रिय) 4 लाइनों में हल हो जाती है, यदि आप Map जानते हैं:
function twoSum(nums, target) {\n const map = new Map();\n for (let i = 0; i < nums.length; i++) {\n const complement = target - nums[i];\n if (map.has(complement)) {\n return [map.get(complement), i];\n }\n map.set(nums[i], i);\n }\n}\n\n\nदेखा? Map की समझ के बिना, आप डबल लूप में जाते और O(n²) पाते। लेकिन यहाँ — लीनियर कॉम्प्लेक्सिटी।
चरण 2. विषयों के अनुसार "Easy" समस्याओं का अभ्यास करें
\n\nशुरुआती के लिए LeetCode पर JavaScript समस्याएँ Easy लेवल की होती हैं। संख्या के पीछे मत भागो। 30 समस्याओं को समझदारी से हल करना बेहतर है, बजाय 100 को "जैसे-तैसे" हल करने के। उन्हें विषयों में विभाजित करें:
\n\n- \n
- एरे (स्लाइडिंग विंडो, डुप्लिकेट हटाना, रोटेशन) \n
- स्ट्रिंग (पैलिंड्रोम, एनाग्राम, सबस्ट्रिंग खोजना) \n
- हैश टेबल (जोड़ी खोजना, फ्रीक्वेंसी गिनना) \n
- लिंक्ड लिस्ट (रिवर्सल, मर्ज) \n
एक उपयोगी समस्या का उदाहरण: "Valid Anagram"। क्लासिक, जो स्ट्रिंग और हैश के साथ काम करना सिखाती है:
\n\nfunction isAnagram(s, t) {\n if (s.length !== t.length) return false;\n const count = {};\n for (let char of s) {\n count[char] = (count[char] || 0) + 1;\n }\n for (let char of t) {\n if (!count[char]) return false;\n count[char]--;\n }\n return true;\n}\n\n\nध्यान दें: हम sort() का उपयोग नहीं कर रहे हैं — यह