LeetCode के लिए TypeScript आदर्श भाषा क्यों है?
\n\nयदि आप अब तक LeetCode पर JavaScript में समस्याएं हल कर रहे थे - तो अब TypeScript पर स्विच करने का समय आ गया है। क्यों? क्योंकि सख्त टाइपिंग कोड चलाने से पहले ही त्रुटियों के एक पूरे वर्ग को समाप्त कर देती है। आप गलती से वहाँ स्ट्रिंग नहीं भेज सकते जहाँ संख्या की अपेक्षा है, और कंपाइलर स्वयं बताएगा कि ऑब्जेक्ट के लिए कौन से मेथड उपलब्ध हैं। यह ऑटोपायलट वाली कार चलाने जैसा है - तेज़, सुरक्षित और अधिक सुखद।
\n\nLeetCode केवल एल्गोरिदम रटने का प्लेटफॉर्म नहीं है। यह एक प्रशिक्षण मैदान है जहाँ आप उन कौशलों को निखारते हैं जो वास्तव में प्रोडक्शन में आवश्यक हैं। और TypeScript आज एंटरप्राइज़ डेवलपमेंट के लिए डी-फैक्टो मानक है। Google, Microsoft और Airbnb जैसी कंपनियाँ ऐसे डेवलपर्स की तलाश करती हैं जो टाइप किया हुआ कोड लिखना जानते हैं। इसलिए, LeetCode पर TypeScript में समस्याएं हल करके, आप एक पत्थर से दो शिकार करते हैं: साक्षात्कार की तैयारी करते हैं और वास्तविक कौशल को बढ़ाते हैं।
\n\nइस लेख में, हम चर्चा करेंगे कि कहाँ से शुरू करें, कौन से प्रकार और डेटा संरचनाएं सीखें, और 3 अलग-अलग स्तरों की समस्याओं को हल करेंगे - आसान से कठिन तक। चलिए शुरू करते हैं!
\n\nशुरू करने से पहले क्या जानना चाहिए
\n\nसमस्याओं के पूल में कूदने से पहले, सुनिश्चित करें कि आपके पास बुनियादी ज्ञान है। TypeScript, JavaScript के ऊपर एक अतिरिक्त परत है, इसलिए पहले JS में दक्ष होना आवश्यक है: क्लोज़र, प्रॉमिस, ऐरे मेथड, ऑब्जेक्ट के साथ काम करना। इसके बिना, TypeScript केवल अतिरिक्त सिंटैक्टिक शुगर जैसा लगेगा।
\n\nLeetCode पर काम आने वाले मुख्य प्रकार
\n- \n
number,string,boolean— बुनियाद, इनके बिना काम नहीं चलेगा \n number[],string[]— ऐरे, 90% समस्याओं में मिलते हैं \n Record<string, number>— शब्दकोश (हैश मैप) के रूप में ऑब्जेक्ट \n Map<K, V>— क्रम बनाए रखने वाला ऑब्जेक्ट का विकल्प \n Set<T>— अद्वितीय मानों के लिए \n Tuple— टपल, मानों की जोड़ी लौटाने वाली समस्याओं में उपयोगी \n null | undefined— सीमांत मामलों को संभालने के लिए \n
सबसे अधिक बार मिलने वाली डेटा संरचनाएं
\n- \n
- ऐरे — सबसे बुनियादी। द्वि-आयामी ऐरे, सॉर्टिंग, बाइनरी सर्च \n
- हैश टेबल — तेज़ खोज के लिए (Two Sum समस्या - क्लासिक) \n
- स्टैक और क्यू — कोष्ठक, BFS, DFS वाली समस्याओं के लिए \n
- लिंक्ड लिस्ट — reverse, merge, detect cycle \n
- ट्री — बाइनरी, बाइनरी सर्च ट्री, ट्रैवर्सल \n
- ग्राफ — आमतौर पर Senior स्तर के साक्षात्कारों में \n
सब कुछ एक साथ सीखने की कोशिश न करें। ऐरे और हैश टेबल से शुरू करें - यह Easy और Medium स्तर की 70% समस्याओं को कवर करेगा।
\n\nLeetCode पर TypeScript के लिए वातावरण कैसे सेट करें
\n\nLeetCode डिफ़ॉल्ट रूप से TypeScript का समर्थन करता है। भाषा चुनते समय, ड्रॉपडाउन में बस "TypeScript" पर क्लिक करें। हालाँकि, यदि आप स्थानीय रूप से कोड लिखना और परीक्षण करना चाहते हैं, तो यहाँ न्यूनतम सेटअप है:
\n\nnpm init -y\nnpm install typescript @types/node --save-dev\nnpx tsc --init\n\nsolution.ts फ़ाइल बनाएं और npx tsc solution.ts && node solution.js कमांड से कंपाइलेशन चलाएं। इससे आपको सख्त टाइपिंग की आदत होगी और चलते-फिरते त्रुटियाँ पकड़ने में मदद मिलेगी।
TypeScript में 3 समस्याओं का विश्लेषण: Easy से Hard तक
\n\nअब अभ्यास की ओर बढ़ते हैं। मैंने तीन ऐसी समस्याएं चुनी हैं जो TypeScript की क्षमताओं को बखूबी प्रदर्शित करती हैं और साक्षात्कारों में अक्सर पूछी जाती हैं।
\n\n1. Two Sum (Easy) — शैली की क्लासिक
\n\nसमस्या: संख्याओं की एक सूची और एक लक्ष्य दिया गया है। दो ऐसी संख्याएं खोजें जिनका योग लक्ष्य के बराबर हो, और उनके इंडेक्स लौटाएं।
\n\nfunction twoSum(nums: number[], target: number): number[] {\n const map = new Map<number, number>();\n\n for (let i = 0; i < nums.length; i++) {\n const complement = target - nums[i];\n if (map.has(complement)) {\n return [map.