Files
leetcode/README.md

335 lines
26 KiB
Markdown

# LeetCode Solutions
This repository contains my solutions to various LeetCode problems. Each solution is implemented in Python and follows a consistent structure.
## 📊 Statistics
- **Total Problems Solved**: 90+
- **Languages**: Python, TypeScript
- **Difficulty Distribution**: Easy, Medium, Hard
## 📁 Solutions Index
### 🔢 Arrays & Strings
#### Easy
- [1. Two Sum](src/exercises/1.two-sum.py) - Hash Table, Array
- [9. Palindrome Number](src/exercises/9.palindrome-number.py) - Math
- [13. Roman to Integer](src/exercises/13.roman-to-integer.py) - Hash Table, Math, String
- [14. Longest Common Prefix](src/exercises/14.longest-common-prefix.py) - String, Trie
- [20. Valid Parentheses](src/exercises/20.valid-parentheses.py) - Stack, String
- [21. Merge Two Sorted Lists](src/exercises/21.merge-two-sorted-lists.py) - Linked List, Recursion
- [26. Remove Duplicates from Sorted Array](src/exercises/80.remove-duplicates-from-sorted-array-ii.py) - Array, Two Pointers
- [27. Remove Element](src/exercises/80.remove-duplicates-from-sorted-array-ii.py) - Array, Two Pointers
- [28. Find the Index of the First Occurrence in a String](src/exercises/28.find-the-index-of-the-first-occurrence-in-a-string.py) - String, Two Pointers
- [35. Search Insert Position](src/exercises/35.search-insert-position.py) - Array, Binary Search
- [66. Plus One](src/exercises/66.plus-one.py) - Array, Math
- [69. Sqrt(x)](src/exercises/69.sqrtx.py) - Math, Binary Search
- [88. Merge Sorted Array](src/exercises/88.merge-sorted-array.py) - Array, Two Pointers
- [125. Valid Palindrome](src/exercises/125.valid-palindrome.py) - String, Two Pointers
- [169. Majority Element](src/exercises/169.majority-element.py) - Array, Hash Table, Divide and Conquer
- [202. Happy Number](src/exercises/202.happy-number.py) - Hash Table, Math, Two Pointers
- [205. Isomorphic Strings](src/exercises/205.isomorphic-strings.py) - Hash Table, String
- [217. Contains Duplicate](src/exercises/217.contains-duplicate.py) - Array, Hash Table, Sorting
- [219. Contains Duplicate II](src/exercises/219.contains-duplicate-ii.py) - Array, Hash Table, Sliding Window
- [242. Valid Anagram](src/exercises/242.valid-anagram.py) - String, Sorting, Hash Table
- [290. Word Pattern](src/exercises/290.word-pattern.py) - Hash Table, String
- [383. Ransom Note](src/exercises/383.ransom-note.py) - String, Hash Table, Counting
- [392. Is Subsequence](src/exercises/392.is-subsequence.py) - String, Two Pointers, Dynamic Programming
- [704. Binary Search](src/exercises/704.binary-search.py) - Array, Binary Search
- [1200. Minimum Absolute Difference](src/exercises/1200.minimum-absolute-difference.py) - Array, Sorting
- [2053. Kth Distinct String in an Array](src/exercises/2053.kth-distinct-string-in-an-array.py) - Array, Hash Table, String
- [2441. Largest Positive Integer That Exists With Its Negative](src/exercises/2441.largest-positive-integer-that-exists-with-its-negative.py) - Array, Hash Table, Two Pointers
#### Medium
- [2. Add Two Numbers](src/exercises/2.add-two-numbers.py) - Linked List, Math, Recursion
- [3. Longest Substring Without Repeating Characters](src/exercises/3.longest-substring-without-repeating-characters.py) - Hash Table, String, Sliding Window
- [3. Longest Substring Without Repeating Characters (TypeScript)](src/exercises/3.longest-substring-without-repeating-characters.ts) - Hash Table, String, Sliding Window
- [4. Median of Two Sorted Arrays](src/exercises/4.median-of-two-sorted-arrays.py) - Array, Binary Search, Divide and Conquer
- [5. Longest Palindromic Substring](src/exercises/5.longest-palindromic-substring.py) - String, Dynamic Programming
- [6. Zigzag Conversion](src/exercises/6.zigzag-conversion.py) - String
- [7. Reverse Integer](src/exercises/7.reverse-integer.py) - Math
- [10. Regular Expression Matching](src/exercises/10.regular-expression-matching.py) - String, Dynamic Programming, Recursion
- [11. Container With Most Water](src/exercises/11.container-with-most-water.py) - Array, Two Pointers, Greedy
- [15. 3Sum](src/exercises/15.3sum.py) - Array, Two Pointers, Sorting
- [22. Generate Parentheses](src/exercises/22.generate-parentheses.py) - String, Dynamic Programming, Backtracking
- [36. Valid Sudoku](src/exercises/36.valid-sudoku.py) - Array, Hash Table, Matrix
- [42. Trapping Rain Water](src/exercises/42.trapping-rain-water.py) - Array, Two Pointers, Dynamic Programming, Stack
- [45. Jump Game II](src/exercises/45.jump-game-ii.py) - Array, Dynamic Programming, Greedy
- [50. Pow(x, n)](src/exercises/50.powx-n.py) - Math, Recursion
- [55. Jump Game](src/exercises/55.jump-game.py) - Array, Dynamic Programming, Greedy
- [74. Search a 2D Matrix](src/exercises/74.search-a-2d-matrix.py) - Array, Binary Search, Matrix
- [80. Remove Duplicates from Sorted Array II](src/exercises/80.remove-duplicates-from-sorted-array-ii.py) - Array, Two Pointers
- [89. Gray Code](src/exercises/89.gray-code.py) - Math, Backtracking, Bit Manipulation
- [90. Subsets II](src/exercises/90.subsets-ii.py) - Array, Backtracking, Bit Manipulation
- [91. Decode Ways](src/exercises/91.decode-ways.py) - String, Dynamic Programming
- [92. Reverse Linked List II](src/exercises/92.reverse-linked-list-ii.py) - Linked List
- [121. Best Time to Buy and Sell Stock](src/exercises/121.best-time-to-buy-and-sell-stock.py) - Array, Dynamic Programming
- [122. Best Time to Buy and Sell Stock II](src/exercises/122.best-time-to-buy-and-sell-stock-ii.py) - Array, Dynamic Programming, Greedy
- [128. Longest Consecutive Sequence](src/exercises/128.longest-consecutive-sequence.py) - Array, Hash Table, Union Find
- [135. Candy](src/exercises/135.candy.py) - Array, Greedy
- [141. Linked List Cycle](src/exercises/141.linked-list-cycle.py) - Hash Table, Linked List, Two Pointers
- [149. Max Points on a Line](src/exercises/149.max-points-on-a-line.py) - Array, Hash Table, Math, Geometry
- [150. Evaluate Reverse Polish Notation](src/exercises/150.evaluate-reverse-polish-notation.py) - Array, Math, Stack
- [153. Find Minimum in Rotated Sorted Array](src/exercises/153.find-minimum-in-rotated-sorted-array.py) - Array, Binary Search
- [155. Min Stack](src/exercises/155.min-stack.py) - Stack, Design
- [167. Two Sum II - Input Array Is Sorted](src/exercises/167.two-sum-ii-input-array-is-sorted.py) - Array, Two Pointers, Binary Search
- [172. Factorial Trailing Zeroes](src/exercises/172.factorial-trailing-zeroes.py) - Math
- [189. Rotate Array](src/exercises/189.rotate-array.py) - Array, Math, Two Pointers
- [206. Reverse Linked List](src/exercises/206.reverse-linked-list.py) - Linked List, Recursion
- [228. Summary Ranges](src/exercises/228.summary-ranges.py) - Array
- [238. Product of Array Except Self](src/exercises/238.product-of-array-except-self.py) - Array, Prefix Sum
- [246. Strobogrammatic Number](src/exercises/246.strobogrammatic-number.py) - Hash Table, Two Pointers, String
- [248. Strobogrammatic Number III](src/exercises/248.strobogrammatic-number-iii.py) - Math, Recursion
- [243. Shortest Word Distance](src/exercises/243.shortest-word-distance.py) - Array, String
- [244. Shortest Word Distance II](src/exercises/244.shortest-word-distance-ii.py) - Array, Hash Table, Design, Two Pointers
- [245. Shortest Word Distance III](src/exercises/245.shortest-word-distance-iii.py) - Array, String
- [875. Koko Eating Bananas](src/exercises/875.koko-eating-bananas.py) - Array, Binary Search
- [990. Satisfiability of Equality Equations](src/exercises/990.satisfiability-of-equality-equations.py) - Array, Union Find, Graph
- [1298. Maximum Candies You Can Get from Boxes](src/exercises/1298.maximum-candies-you-can-get-from-boxes.py) - Breadth-First Search, Array
- [1820. Maximum Number of Accepted Invitations](src/exercises/1820.maximum-number-of-accepted-invitations.py) - Graph, Backtracking
- [2040. Kth Smallest Product of Two Sorted Arrays](src/exercises/2040.kth-smallest-product-of-two-sorted-arrays.py) - Array, Binary Search
- [2116. Check if a Parentheses String Can Be Valid](src/exercises/2116.check-if-a-parentheses-string-can-be-valid.py) - String, Stack, Greedy
- [2294. Partition Array Such That Maximum Difference Is K](src/exercises/2294.partition-array-such-that-maximum-difference-is-k.py) - Array, Greedy, Sorting
- [2616. Minimize the Maximum Difference of Pairs](src/exercises/2616.minimize-the-maximum-difference-of-pairs.py) - Array, Binary Search, Greedy
- [2966. Divide Array Into Arrays With Max Difference](src/exercises/2966.divide-array-into-arrays-with-max-difference.py) - Array, Greedy, Sorting
- [3442. Maximum Difference Between Even and Odd Frequency I](src/exercises/3442.maximum-difference-between-even-and-odd-frequency-i.py) - Array, Hash Table
- [3445. Maximum Difference Between Even and Odd Frequency II](src/exercises/3445.maximum-difference-between-even-and-odd-frequency-ii.py) - Array, Hash Table
### 🔗 Linked Lists
- [2. Add Two Numbers](src/exercises/2.add-two-numbers.py) - Linked List, Math, Recursion
- [21. Merge Two Sorted Lists](src/exercises/21.merge-two-sorted-lists.py) - Linked List, Recursion
- [92. Reverse Linked List II](src/exercises/92.reverse-linked-list-ii.py) - Linked List
- [141. Linked List Cycle](src/exercises/141.linked-list-cycle.py) - Hash Table, Linked List, Two Pointers
- [206. Reverse Linked List](src/exercises/206.reverse-linked-list.py) - Linked List, Recursion
### 🌳 Trees & Graphs
- [1298. Maximum Candies You Can Get from Boxes](src/exercises/1298.maximum-candies-you-can-get-from-boxes.py) - Breadth-First Search, Array
- [1820. Maximum Number of Accepted Invitations](src/exercises/1820.maximum-number-of-accepted-invitations.py) - Graph, Backtracking
- [990. Satisfiability of Equality Equations](src/exercises/990.satisfiability-of-equality-equations.py) - Array, Union Find, Graph
### 🔍 Binary Search
- [4. Median of Two Sorted Arrays](src/exercises/4.median-of-two-sorted-arrays.py) - Array, Binary Search, Divide and Conquer
- [35. Search Insert Position](src/exercises/35.search-insert-position.py) - Array, Binary Search
- [50. Pow(x, n)](src/exercises/50.powx-n.py) - Math, Recursion
- [69. Sqrt(x)](src/exercises/69.sqrtx.py) - Math, Binary Search
- [74. Search a 2D Matrix](src/exercises/74.search-a-2d-matrix.py) - Array, Binary Search, Matrix
- [153. Find Minimum in Rotated Sorted Array](src/exercises/153.find-minimum-in-rotated-sorted-array.py) - Array, Binary Search
- [167. Two Sum II - Input Array Is Sorted](src/exercises/167.two-sum-ii-input-array-is-sorted.py) - Array, Two Pointers, Binary Search
- [704. Binary Search](src/exercises/704.binary-search.py) - Array, Binary Search
- [875. Koko Eating Bananas](src/exercises/875.koko-eating-bananas.py) - Array, Binary Search
- [2040. Kth Smallest Product of Two Sorted Arrays](src/exercises/2040.kth-smallest-product-of-two-sorted-arrays.py) - Array, Binary Search
- [2616. Minimize the Maximum Difference of Pairs](src/exercises/2616.minimize-the-maximum-difference-of-pairs.py) - Array, Binary Search, Greedy
### 🧮 Dynamic Programming
- [5. Longest Palindromic Substring](src/exercises/5.longest-palindromic-substring.py) - String, Dynamic Programming
- [10. Regular Expression Matching](src/exercises/10.regular-expression-matching.py) - String, Dynamic Programming, Recursion
- [22. Generate Parentheses](src/exercises/22.generate-parentheses.py) - String, Dynamic Programming, Backtracking
- [42. Trapping Rain Water](src/exercises/42.trapping-rain-water.py) - Array, Two Pointers, Dynamic Programming, Stack
- [45. Jump Game II](src/exercises/45.jump-game-ii.py) - Array, Dynamic Programming, Greedy
- [55. Jump Game](src/exercises/55.jump-game.py) - Array, Dynamic Programming, Greedy
- [91. Decode Ways](src/exercises/91.decode-ways.py) - String, Dynamic Programming
- [121. Best Time to Buy and Sell Stock](src/exercises/121.best-time-to-buy-and-sell-stock.py) - Array, Dynamic Programming
- [122. Best Time to Buy and Sell Stock II](src/exercises/122.best-time-to-buy-and-sell-stock-ii.py) - Array, Dynamic Programming, Greedy
- [128. Longest Consecutive Sequence](src/exercises/128.longest-consecutive-sequence.py) - Array, Hash Table, Union Find
- [135. Candy](src/exercises/135.candy.py) - Array, Greedy
- [392. Is Subsequence](src/exercises/392.is-subsequence.py) - String, Two Pointers, Dynamic Programming
### 🎯 Two Pointers
- [3. Longest Substring Without Repeating Characters](src/exercises/3.longest-substring-without-repeating-characters.py) - Hash Table, String, Sliding Window
- [11. Container With Most Water](src/exercises/11.container-with-most-water.py) - Array, Two Pointers, Greedy
- [15. 3Sum](src/exercises/15.3sum.py) - Array, Two Pointers, Sorting
- [26. Remove Duplicates from Sorted Array](src/exercises/80.remove-duplicates-from-sorted-array-ii.py) - Array, Two Pointers
- [27. Remove Element](src/exercises/80.remove-duplicates-from-sorted-array-ii.py) - Array, Two Pointers
- [28. Find the Index of the First Occurrence in a String](src/exercises/28.find-the-index-of-the-first-occurrence-in-a-string.py) - String, Two Pointers
- [42. Trapping Rain Water](src/exercises/42.trapping-rain-water.py) - Array, Two Pointers, Dynamic Programming, Stack
- [80. Remove Duplicates from Sorted Array II](src/exercises/80.remove-duplicates-from-sorted-array-ii.py) - Array, Two Pointers
- [88. Merge Sorted Array](src/exercises/88.merge-sorted-array.py) - Array, Two Pointers
- [125. Valid Palindrome](src/exercises/125.valid-palindrome.py) - String, Two Pointers
- [141. Linked List Cycle](src/exercises/141.linked-list-cycle.py) - Hash Table, Linked List, Two Pointers
- [167. Two Sum II - Input Array Is Sorted](src/exercises/167.two-sum-ii-input-array-is-sorted.py) - Array, Two Pointers, Binary Search
- [189. Rotate Array](src/exercises/189.rotate-array.py) - Array, Math, Two Pointers
- [202. Happy Number](src/exercises/202.happy-number.py) - Hash Table, Math, Two Pointers
- [219. Contains Duplicate II](src/exercises/219.contains-duplicate-ii.py) - Array, Hash Table, Sliding Window
- [243. Shortest Word Distance](src/exercises/243.shortest-word-distance.py) - Array, String
- [244. Shortest Word Distance II](src/exercises/244.shortest-word-distance-ii.py) - Array, Hash Table, Design, Two Pointers
- [245. Shortest Word Distance III](src/exercises/245.shortest-word-distance-iii.py) - Array, String
- [246. Strobogrammatic Number](src/exercises/246.strobogrammatic-number.py) - Hash Table, Two Pointers, String
- [392. Is Subsequence](src/exercises/392.is-subsequence.py) - String, Two Pointers, Dynamic Programming
- [2441. Largest Positive Integer That Exists With Its Negative](src/exercises/2441.largest-positive-integer-that-exists-with-its-negative.py) - Array, Hash Table, Two Pointers
### 🗃️ Hash Tables
- [1. Two Sum](src/exercises/1.two-sum.py) - Hash Table, Array
- [13. Roman to Integer](src/exercises/13.roman-to-integer.py) - Hash Table, Math, String
- [20. Valid Parentheses](src/exercises/20.valid-parentheses.py) - Stack, String
- [36. Valid Sudoku](src/exercises/36.valid-sudoku.py) - Array, Hash Table, Matrix
- [141. Linked List Cycle](src/exercises/141.linked-list-cycle.py) - Hash Table, Linked List, Two Pointers
- [149. Max Points on a Line](src/exercises/149.max-points-on-a-line.py) - Array, Hash Table, Math, Geometry
- [169. Majority Element](src/exercises/169.majority-element.py) - Array, Hash Table, Divide and Conquer
- [202. Happy Number](src/exercises/202.happy-number.py) - Hash Table, Math, Two Pointers
- [205. Isomorphic Strings](src/exercises/205.isomorphic-strings.py) - Hash Table, String
- [217. Contains Duplicate](src/exercises/217.contains-duplicate.py) - Array, Hash Table, Sorting
- [219. Contains Duplicate II](src/exercises/219.contains-duplicate-ii.py) - Array, Hash Table, Sliding Window
- [242. Valid Anagram](src/exercises/242.valid-anagram.py) - String, Sorting, Hash Table
- [243. Shortest Word Distance](src/exercises/243.shortest-word-distance.py) - Array, String
- [244. Shortest Word Distance II](src/exercises/244.shortest-word-distance-ii.py) - Array, Hash Table, Design, Two Pointers
- [246. Strobogrammatic Number](src/exercises/246.strobogrammatic-number.py) - Hash Table, Two Pointers, String
- [290. Word Pattern](src/exercises/290.word-pattern.py) - Hash Table, String
- [383. Ransom Note](src/exercises/383.ransom-note.py) - String, Hash Table, Counting
- [128. Longest Consecutive Sequence](src/exercises/128.longest-consecutive-sequence.py) - Array, Hash Table, Union Find
- [2053. Kth Distinct String in an Array](src/exercises/2053.kth-distinct-string-in-an-array.py) - Array, Hash Table, String
- [2441. Largest Positive Integer That Exists With Its Negative](src/exercises/2441.largest-positive-integer-that-exists-with-its-negative.py) - Array, Hash Table, Two Pointers
- [3442. Maximum Difference Between Even and Odd Frequency I](src/exercises/3442.maximum-difference-between-even-and-odd-frequency-i.py) - Array, Hash Table
- [3445. Maximum Difference Between Even and Odd Frequency II](src/exercises/3445.maximum-difference-between-even-and-odd-frequency-ii.py) - Array, Hash Table
### 📚 Stacks & Queues
- [20. Valid Parentheses](src/exercises/20.valid-parentheses.py) - Stack, String
- [42. Trapping Rain Water](src/exercises/42.trapping-rain-water.py) - Array, Two Pointers, Dynamic Programming, Stack
- [150. Evaluate Reverse Polish Notation](src/exercises/150.evaluate-reverse-polish-notation.py) - Array, Math, Stack
- [155. Min Stack](src/exercises/155.min-stack.py) - Stack, Design
- [2116. Check if a Parentheses String Can Be Valid](src/exercises/2116.check-if-a-parentheses-string-can-be-valid.py) - String, Stack, Greedy
### 🔄 Backtracking
- [22. Generate Parentheses](src/exercises/22.generate-parentheses.py) - String, Dynamic Programming, Backtracking
- [89. Gray Code](src/exercises/89.gray-code.py) - Math, Backtracking, Bit Manipulation
- [90. Subsets II](src/exercises/90.subsets-ii.py) - Array, Backtracking, Bit Manipulation
- [1820. Maximum Number of Accepted Invitations](src/exercises/1820.maximum-number-of-accepted-invitations.py) - Graph, Backtracking
### 🎲 Greedy
- [11. Container With Most Water](src/exercises/11.container-with-most-water.py) - Array, Two Pointers, Greedy
- [45. Jump Game II](src/exercises/45.jump-game-ii.py) - Array, Dynamic Programming, Greedy
- [55. Jump Game](src/exercises/55.jump-game.py) - Array, Dynamic Programming, Greedy
- [122. Best Time to Buy and Sell Stock II](src/exercises/122.best-time-to-buy-and-sell-stock-ii.py) - Array, Dynamic Programming, Greedy
- [135. Candy](src/exercises/135.candy.py) - Array, Greedy
- [2116. Check if a Parentheses String Can Be Valid](src/exercises/2116.check-if-a-parentheses-string-can-be-valid.py) - String, Stack, Greedy
- [2294. Partition Array Such That Maximum Difference Is K](src/exercises/2294.partition-array-such-that-maximum-difference-is-k.py) - Array, Greedy, Sorting
- [2616. Minimize the Maximum Difference of Pairs](src/exercises/2616.minimize-the-maximum-difference-of-pairs.py) - Array, Binary Search, Greedy
- [2966. Divide Array Into Arrays With Max Difference](src/exercises/2966.divide-array-into-arrays-with-max-difference.py) - Array, Greedy, Sorting
### 🔢 Math
- [7. Reverse Integer](src/exercises/7.reverse-integer.py) - Math
- [9. Palindrome Number](src/exercises/9.palindrome-number.py) - Math
- [13. Roman to Integer](src/exercises/13.roman-to-integer.py) - Hash Table, Math, String
- [50. Pow(x, n)](src/exercises/50.powx-n.py) - Math, Recursion
- [66. Plus One](src/exercises/66.plus-one.py) - Array, Math
- [69. Sqrt(x)](src/exercises/69.sqrtx.py) - Math, Binary Search
- [89. Gray Code](src/exercises/89.gray-code.py) - Math, Backtracking, Bit Manipulation
- [149. Max Points on a Line](src/exercises/149.max-points-on-a-line.py) - Array, Hash Table, Math, Geometry
- [172. Factorial Trailing Zeroes](src/exercises/172.factorial-trailing-zeroes.py) - Math
- [189. Rotate Array](src/exercises/189.rotate-array.py) - Array, Math, Two Pointers
- [202. Happy Number](src/exercises/202.happy-number.py) - Hash Table, Math, Two Pointers
- [150. Evaluate Reverse Polish Notation](src/exercises/150.evaluate-reverse-polish-notation.py) - Array, Math, Stack
### 🧮 Bit Manipulation
- [89. Gray Code](src/exercises/89.gray-code.py) - Math, Backtracking, Bit Manipulation
- [90. Subsets II](src/exercises/90.subsets-ii.py) - Array, Backtracking, Bit Manipulation
### 🏗️ Design
- [155. Min Stack](src/exercises/155.min-stack.py) - Stack, Design
- [244. Shortest Word Distance II](src/exercises/244.shortest-word-distance-ii.py) - Array, Hash Table, Design, Two Pointers
### 🔗 Union Find
- [128. Longest Consecutive Sequence](src/exercises/128.longest-consecutive-sequence.py) - Array, Hash Table, Union Find
- [990. Satisfiability of Equality Equations](src/exercises/990.satisfiability-of-equality-equations.py) - Array, Union Find, Graph
### 📊 Sorting
- [15. 3Sum](src/exercises/15.3sum.py) - Array, Two Pointers, Sorting
- [80. Remove Duplicates from Sorted Array II](src/exercises/80.remove-duplicates-from-sorted-array-ii.py) - Array, Two Pointers
- [88. Merge Sorted Array](src/exercises/88.merge-sorted-array.py) - Array, Two Pointers
- [1200. Minimum Absolute Difference](src/exercises/1200.minimum-absolute-difference.py) - Array, Sorting
- [217. Contains Duplicate](src/exercises/217.contains-duplicate.py) - Array, Hash Table, Sorting
- [242. Valid Anagram](src/exercises/242.valid-anagram.py) - String, Sorting, Hash Table
- [2294. Partition Array Such That Maximum Difference Is K](src/exercises/2294.partition-array-such-that-maximum-difference-is-k.py) - Array, Greedy, Sorting
- [2966. Divide Array Into Arrays With Max Difference](src/exercises/2966.divide-array-into-arrays-with-max-difference.py) - Array, Greedy, Sorting
### 🔄 Recursion
- [2. Add Two Numbers](src/exercises/2.add-two-numbers.py) - Linked List, Math, Recursion
- [10. Regular Expression Matching](src/exercises/10.regular-expression-matching.py) - String, Dynamic Programming, Recursion
- [21. Merge Two Sorted Lists](src/exercises/21.merge-two-sorted-lists.py) - Linked List, Recursion
- [22. Generate Parentheses](src/exercises/22.generate-parentheses.py) - String, Dynamic Programming, Backtracking
- [50. Pow(x, n)](src/exercises/50.powx-n.py) - Math, Recursion
- [206. Reverse Linked List](src/exercises/206.reverse-linked-list.py) - Linked List, Recursion
- [248. Strobogrammatic Number III](src/exercises/248.strobogrammatic-number-iii.py) - Math, Recursion
### 🎯 Sliding Window
- [3. Longest Substring Without Repeating Characters](src/exercises/3.longest-substring-without-repeating-characters.py) - Hash Table, String, Sliding Window
- [219. Contains Duplicate II](src/exercises/219.contains-duplicate-ii.py) - Array, Hash Table, Sliding Window
### 📐 Geometry
- [149. Max Points on a Line](src/exercises/149.max-points-on-a-line.py) - Array, Hash Table, Math, Geometry
### 🔍 Divide and Conquer
- [4. Median of Two Sorted Arrays](src/exercises/4.median-of-two-sorted-arrays.py) - Array, Binary Search, Divide and Conquer
- [169. Majority Element](src/exercises/169.majority-element.py) - Array, Hash Table, Divide and Conquer
### 📝 String Manipulation
- [3. Longest Substring Without Repeating Characters](src/exercises/3.longest-substring-without-repeating-characters.py) - Hash Table, String, Sliding Window
- [5. Longest Palindromic Substring](src/exercises/5.longest-palindromic-substring.py) - String, Dynamic Programming
- [6. Zigzag Conversion](src/exercises/6.zigzag-conversion.py) - String
- [10. Regular Expression Matching](src/exercises/10.regular-expression-matching.py) - String, Dynamic Programming, Recursion
- [13. Roman to Integer](src/exercises/13.roman-to-integer.py) - Hash Table, Math, String
- [14. Longest Common Prefix](src/exercises/14.longest-common-prefix.py) - String, Trie
- [20. Valid Parentheses](src/exercises/20.valid-parentheses.py) - Stack, String
- [22. Generate Parentheses](src/exercises/22.generate-parentheses.py) - String, Dynamic Programming, Backtracking
- [28. Find the Index of the First Occurrence in a String](src/exercises/28.find-the-index-of-the-first-occurrence-in-a-string.py) - String, Two Pointers
- [125. Valid Palindrome](src/exercises/125.valid-palindrome.py) - String, Two Pointers
- [205. Isomorphic Strings](src/exercises/205.isomorphic-strings.py) - Hash Table, String
- [242. Valid Anagram](src/exercises/242.valid-anagram.py) - String, Sorting, Hash Table
- [246. Strobogrammatic Number](src/exercises/246.strobogrammatic-number.py) - Hash Table, Two Pointers, String
- [248. Strobogrammatic Number III](src/exercises/248.strobogrammatic-number-iii.py) - Math, Recursion
- [290. Word Pattern](src/exercises/290.word-pattern.py) - Hash Table, String
- [383. Ransom Note](src/exercises/383.ransom-note.py) - String, Hash Table, Counting
- [392. Is Subsequence](src/exercises/392.is-subsequence.py) - String, Two Pointers, Dynamic Programming
- [91. Decode Ways](src/exercises/91.decode-ways.py) - String, Dynamic Programming
- [2116. Check if a Parentheses String Can Be Valid](src/exercises/2116.check-if-a-parentheses-string-can-be-valid.py) - String, Stack, Greedy
### 📊 Matrix
- [36. Valid Sudoku](src/exercises/36.valid-sudoku.py) - Array, Hash Table, Matrix
- [74. Search a 2D Matrix](src/exercises/74.search-a-2d-matrix.py) - Array, Binary Search, Matrix
### 🔢 Counting
- [383. Ransom Note](src/exercises/383.ransom-note.py) - String, Hash Table, Counting
### 🌐 Breadth-First Search
- [1298. Maximum Candies You Can Get from Boxes](src/exercises/1298.maximum-candies-you-can-get-from-boxes.py) - Breadth-First Search, Array
## 📈 Progress Tracking
### Difficulty Distribution
- **Easy**: ~40 problems
- **Medium**: ~45 problems
- **Hard**: ~5 problems
### Top Problem Types
1. **Arrays & Strings** - Most common
2. **Hash Tables** - Frequently used technique
3. **Two Pointers** - Efficient array manipulation
4. **Binary Search** - Optimization problems
5. **Dynamic Programming** - Complex problem solving
## 🛠️ Solution Structure
Each solution follows a consistent structure:
- Standard library imports
- Type hints for better code clarity
- Solution class with required method
- Clean, readable implementation
- Proper comments and documentation
## 🎯 Learning Focus Areas
Based on the solutions, key areas of expertise include:
- **Array manipulation** and **two-pointer techniques**
- **Hash table** optimization for lookups
- **Binary search** for efficient searching
- **Dynamic programming** for complex problems
- **String manipulation** and **palindrome problems**
- **Linked list** operations and **cycle detection**
## 📚 Resources
- [LeetCode Problem Set](https://leetcode.com/problemset/)
- [LeetCode Profile](https://leetcode.com/u/cargdev/)
---
*This index is automatically generated and organized by problem categories and difficulty levels. Each solution includes the relevant tags and techniques used.*