Records of all my solved problems on LeetCode
| Question # | Solution Link | Difficulty | Category | Demo | Language | LeetCode Link | 
|---|---|---|---|---|---|---|
| 1 | twoSum | Easy | HashMap | False | Java | Two Sum | 
| 2 | addTwoNums | Medium | Math | False | Java | Add Two Numbers | 
| 3 | lenOfLongestSubstr | Medium | Sliding Window | True | Java | Longest Substring Without Repeating Characters | 
| 4 | medianOf2SortedAry | Hard | Binary Search | True | Java | Median of Two Sorted Arrays | 
| 5 | longestPalindrome | Medium | Dynamic Programming | True | Java | Longest Palindromic Substring | 
| 6 | zigzagConversion | Medium | Str Traversal | True | Java | ZigZag Conversion | 
| 7 | reverseInteger | Easy | Math | False | Java | Reverse Integer | 
| 8 | atoi | Medium | Str Traversal, DFA | True | Java | String to Integer (atoi) | 
| 9 | palindromeNum | Easy | Math | False | Java | Palindrome Number | 
| 10 | regExpMatching | Hard | Dynamic Programming | True | Java | Regular Expression Matching | 
| 11 | maxArea | Medium | Two Pointers | True | Java | Container With Most Water | 
| 12 | intToRoman | Medium | Math | False | Java | Integer to Roman | 
| 13 | romanToInt | Easy | Math | False | Java | Roman to Integer | 
| 14 | lngstCommonPrefix | Easy | Str Traversal | False | Java, Python | Longest Common Prefix | 
| 15 | threeSum | Medium | Two Pointers | False | Python | 3Sum | 
| 16 | threeSumClosest | Medium | Two Pointers | False | Python | 3Sum Closest | 
| 17 | phoneNumLetterComb | Medium | Math | True | Python | Letter Combinations of a Phone Number | 
| 18 | fourSum | Medium | Two Pointers, Recursion | False | Python | 4Sum | 
| 19 | rmNthNodeFromEnd | Medium | LinkedList | True | Java | Remove Nth Node From End of List | 
| 20 | validParentheses | Easy | Stack, Turing Machine | True | Python, Java | Valid Parentheses | 
| 21 | mergeTwoSortedArys | Easy | LinkedList | False | Java | Merge Two Sorted Lists | 
| 22 | generateParentheses | Medium | Dynamic Programming, Backtracking | True | Python | Generate Parentheses | 
| 23 | mergeKsortedArys | Hard | Priority Queue, Divide & Conquer | True | Java | Merge k Sorted Lists | 
| 24 | swapPairs | Medium | LinkedList, Recursion | False | Java | Swap Nodes in Pairs | 
| 25 | reverseKgroup | Hard | LinkedList | True | Java | Reverse Nodes in k-Group | 
| 26 | rmDuplicatesFromList | Easy | Two Pointers | False | Python | Remove Duplicates from Sorted Array | 
| 27 | rmElementsFromList | Easy | Two Pointers | False | Python | Remove Element | 
| 28 | implementIndexOf | Easy | Sliding Window, Two Pointers | True | Python | Implement strStr() | 
| 29 | divideTwoInts | Medium | Bit Manipulation | False | Java | Divide Two Integers | 
| 30 | findSubstr | Hard | HashMap | True | Python | Substring with Concatenation of All Words | 
| 31 | nextPermutation | Medium | Math | True | Python | Next Permutation | 
| 32 | lngstValidParentheses | Hard | Stack, Dynamic Programming | True | Python | Longest Valid Parentheses | 
| 33 | searchRotatedSortedAry | Medium | Binary Search | True | Python | Search in Rotated Sorted Array | 
| 34 | searchRangeInSortedAry | Medium | Binary Search | False | Python | Find First and Last Position of Element in Sorted Array | 
| 35 | searchInsertPos | Easy | Binary Search | False | Python | Search Insert Position | 
| 36 | validSudoku | Medium | HashSet | False | Python | Valid Sudoku | 
| 37 | solveSudoku | Hard | Backtracking | False | Python | Sudoku Solver | 
| 38 | countAndSay | Medium | Str Traversal | True | Java | Count and Say | 
| 39 | combinationSum | Medium | Backtracking, Dynamic Programming | True | Java | Combination Sum | 
| 40 | combinationSum II | Medium | Backtracking, Dynamic Programming | False | Java | Combination Sum II | 
| 41 | firstMissingPositive | Hard | In-place Hashing | True | Java | First Missing Positive | 
| 42 | trappingRainWater | Hard | Dynamic Programming | True | Java, Python | Trapping Rain Water | 
| 43 | multiplyStrings | Medium | Math | True | Python | Multiply Strings | 
| 44 | wildcardMatching | Hard | Backtracking, Dynamic Programming | True | Python | Wildcard Matching | 
| 45 | jumpGame2 | Medium | Greedy Algorithm | True | Java | Jump Game II | 
| 46 | permutations | Medium | DFS | True | Python, C++ | Permutations | 
| 47 | permutations2 | Medium | DFS | False | Python | Permutations II | 
| 48 | rotateImage | Medium | List Manipulation | True | Python | Rotate Image | 
| 49 | groupAnagrams | Medium | HashMap | False | Python | Group Anagrams | 
| 50 | pow(x, n) | Medium | Binary Exponentiation | True | Python | Pow(x, n) | 
| 51 | n-queens | Hard | Backtracking | False | Python | N-Queens | 
| 52 | n-queens 2 | Hard | Backtracking | False | Python | N-Queens II | 
| 53 | maximumSubarray | Easy | Dynamic Programming | True | Java | Maximum Subarray | 
| 54 | spiralMatrix | Medium | List Traversal | False | Python | Spiral Matrix | 
| 55 | jumpGame | Medium | Greedy Algorithm, Backtracking | False | Python | Jump Game | 
| 56 | mergeIntervals | Medium | List Traversal | False | Python | Merge Intervals | 
| 57 | insertIntervals | Medium | List Traversal | False | Python | Insert Interval | 
| 58 | lengthOfLastWord | Easy | Str Traversal | False | Python | Length of Last Word | 
| 59 | spiralMatrix II | Medium | List Traversal | False | Python | Spiral Matrix II | 
| 60 | permutationSeq | Hard | Math | True | Python | Permutation Sequence | 
| 61 | rotateList | Medium | LinkedList | False | Python | Rotate List | 
| 62 | uniquePaths | Medium | DFS, Recursion | False | Python | Unique Paths | 
| 63 | uniquePaths II | Medium | Dynamic Programming | True | Python | Unique Paths II | 
| 64 | minPathSum | Medium | Dynamic Programming | False | Python | Minimum Path Sum | 
| 65 | validNumber | Hard | DFA | True | Python | Valid Number | 
| 66 | plusOne | Easy | Math | False | Python | Plus One | 
| 67 | addBinary | Easy | Math | False | Python | Add Binary | 
| 68 | textJustification | Hard | List Traversal | False | Python | Text Justification | 
| 69 | sqrt(x) | Easy | Math | False | Python | Sqrt(x) | 
| 70 | climbStairs | Easy | Math | False | Python | Climbing Stairs | 
| 71 | simplifyPath | Medium | Str Traversal | False | Python | Simplify Path | 
| 72 | editDistance | Hard | Dynamic Programming | True | Python | Edit Distance | 
| 73 | setMatrixZero | Medium | List Traversal | True | Python | Set Matrix Zeroes | 
| 74 | searchMatrix | Medium | Binary Search, List Traversal | False | Python | Search a 2D Matrix | 
| 75 | sortColors | Medium | Two Pointers, Sorting | False | Python | Sort Colors | 
| 76 | minWindow | Hard | Two Pointers | False | Python | Minimum Window Substring | 
| 77 | combinations | Medium | Backtracking | False | Python | Combinations | 
| 78 | subsets | Medium | Backtracking, Cascading | True | Python | Subsets | 
| 79 | wordSearch | Medium | Backtracking | False | Python | Word Search | 
| 80 | rmDupFromSortedAry II | Medium | Two Pointers | True | Python | Remove Duplicates from Sorted Array II | 
| 81 | searchRotatedSortedAry II | Medium | Binary Search | False | Python | Search in Rotated Sorted Array II | 
| 82 | rmDupFromSortedLst II | Medium | Two Pointers | False | Python | Remove Duplicates from Sorted List II | 
| 83 | rmDupFromSortedLst | Easy | LinkedList, Recursion | True | Python | Remove Duplicates from Sorted List | 
| 84 | largestRecInHist | Hard | Stack | False | Python | Largest Rectangle in Histogram | 
| 85 | maxRec | Hard | Dynamic Programming | False | Python | Maximal Rectangle | 
| 86 | partitionList | Medium | LinkedList, Two Pointers | False | Python | Partition List | 
| 87 | scrambleString | Hard | Recursion | True | Python | Scramble String | 
| 88 | mergeSortedAry | Easy | List Traversal | False | Python | Merge Sorted Array | 
| 89 | grayCode | Medium | Bit Manipulation | False | Python | Gray Code | 
| 90 | subsets II | Medium | DFS | False | Python | Subsets II | 
| 91 | decodeWays | Medium | DFS, Dynamic Programming | True | Python | Decode Ways | 
| 92 | reverseLinkedList II | Medium | LinkedList | False | Python | Reverse Linked List II | 
| 93 | restoreIPaddr | Medium | Backtracking | False | Python | Restore IP Addresses | 
| 94 | inorderTraversal | Easy | Binary Tree, DFS | True | Python | Binary Tree Inorder Traversal | 
| 95 | uniqueBST II | Medium | Binary Tree, Recursion | True | Python | Unique Binary Search Trees II | 
| 96 | uniqueBST | Medium | Dynamic Programming, Binary Tree | True | Python | Unique Binary Search Trees | 
| 97 | interleavingStr | Medium | Dynamic Programming, Backtracking, DFS | False | Python | Interleaving String | 
| 98 | validateBST | Medium | DFS, BFS, BST | False | Python | Validate Binary Search Tree | 
| 99 | recoverBST | Medium | DFS, BST | False | Python | Recover Binary Search Tree | 
| 100 | sameTree | Medium | DFS, BST | False | Python | Same Tree | 
| 101 | symmetricTree | Easy | DFS, BST | False | Python | Symmetric Tree | 
| 102 | levelOrderTraversal | Mediumn | BFS, BST | False | Python | Binary Tree Level Order Traversal | 
| 103 | BTzigzagTraversal | Mediumn | BFS, BST | False | Python | Binary Tree Zigzag Level Order Traversal | 
| 104 | maxDepthBST | Easy | DFS, BST | False | Python | Maximum Depth of Binary Tree | 
| 105 | treeFromPre&Inorder | Medium | BST | False | Python | Construct Binary Tree from Preorder and Inorder Traversal | 
| 106 | treeFromIn&Postorder | Medium | BST | False | Python | Construct Binary Tree from Inorder and Postorder Traversal | 
| 107 | lvlOrderTraversal II | Medium | BFS, BST | False | Python | Binary Tree Level Order Traversal II | 
| 108 | cvtSortedAryToBST | Easy | BST | False | Python | Convert Sorted Array to Binary Search Tree | 
| 109 | cvtSortedLnkedListToBST | Medium | BST | False | Python | Convert Sorted List to Binary Search Tree | 
| 110 | balancedBinaryTree | Easy | DFS | False | Python | Balanced Binary Tree | 
| 111 | minDepthOfBinaryTree | Easy | DFS | False | Python | Minimum Depth of Binary Tree | 
| 112 | pathSum | Easy | DFS | False | Python | Path Sum | 
| 113 | pathSum II | Medium | DFS | False | Python | Path Sum II | 
| 114 | flattenBT2LinkedList | Medium | Binary Tree | True | Python | Flatten Binary Tree to Linked List | 
| 115 | distinctSubseq | Hard | DFS, Dynamic Programming | False | Python | Distinct Subsequences | 
| 116 | populatingNextPtr | Medium | BFS | False | Python | Populating Next Right Pointers in Each Node | 
| 117 | populatingNxtPtr II | Medium | BFS | False | Python | Populating Next Right Pointers in Each Node II | 
| 118 | Pascal's triangle | Easy | Math | False | Python | Pascal's Triangle | 
| 119 | Pascal's triangle II | Easy | Math | False | Python | Pascal's Triangle II | 
| 120 | minTotalTriangle | Medium | Dynamic Programming | True | Python | Triangle | 
| 121 | bestTimeToBuyAndSell | Easy | Two Pointers | True | Python | Best Time to Buy and Sell Stock | 
| 122 | bestTimeToBuyAndSell II | Medium | Greedy Algorithm | True | Python | Best Time to Buy and Sell Stock II | 
| 123 | bestTimeToBuyAndSell III | Hard | Dynamic Programming | False | Python | Best Time to Buy and Sell Stock III | 
| 124 | BTMaxPathSum | Hard | Recursion | False | Python | Binary Tree Maximum Path Sum | 
| 125 | validPalindrome | Easy | Two Pointers | False | Python | Valid Palindrome | 
| 126 | wordLadder II | Hard | BFS | False | Python | Word Ladder II | 
| 127 | wordLadder | Hard | BFS, Bidirectional BFS | True | Python | Word Ladder | 
| 128 | longestConsecutiveSeq | Medium | List Traversal | True | Python | Longest Consecutive Sequence | 
| 129 | root2LeafNumSum | Medium | DFS | False | Python, C++ | Sum Root to Leaf Numbers | 
| 130 | surroundedRegions | Medium | DFS | False | C++ | Surrounded Regions | 
| 131 | partitionPalindrome | Medium | DFS, Backtracking | True | C++ | Palindrome Partitioning | 
| 132 | partitionPalindromeII | Hard | Dynamic Programming | True | C++ | Palindrome Partitioning II | 
| 133 | cloneGraph | Medium | DFS | False | C++ | Clone Graph | 
| 134 | gasStation | Medium | Greedy | False | C++ | Gas Station | 
| 135 | candy | Hard | Greedy | False | C++ | Candy | 
| 136 | singleNumber | Easy | Bit Manipulation | False | C++ | Single Number | 
| 137 | singleNumber II | Medium | Bit Manipulation, Logic Circuit | True | C++ | Single Number II | 
| 138 | copyLstW/RandomPtr | Medium | LinkedList, Map | True | C++ | Copy List with Random Pointer | 
| 139 | wordBreak | Medium | Dynamic Programming | True | C++ | Word Break | 
| 140 | wordBreak II | Hard | Backtracking | False | C++ | Word Break II | 
| 141 | linkedListCycle | Easy | LinkedList | False | C++ | Linked List Cycle | 
| 142 | linkedListCycle II | Medium | Two Pointers, LinkedList | True | C++ | Linked List Cycle II | 
| 143 | reorderList | Medium | Two Pointers, LinkedList | False | C++ | Reorder List | 
| 144 | preorderTraversal | Easy | Recursion, Morris Traversal, Stack | True | C++ | Binary Tree Preorder Traversal | 
| 145 | postorderTraversal | Easy | Recursion, Stack | False | C++ | Binary Tree Postorder Traversal | 
| 146 | LRUCache | Medium | LinkedList | False | C++ | LRUCache | 
| 147 | insertionSortList | Medium | LinkedList | False | C++ | Insertion Sort List | 
| 148 | sortList | Medium | Merge Sort, LinkedList | False | C++ | Sort List | 
| 149 | maxPtsOnLine | Hard | Math | False | Python | Max Points on a Line | 
| 150 | evalRevPolishNotation | Medium | Stack | False | Python | Evaluate Reverse Polish Notation | 
| 151 | reverseWordsInStr | Medium | Str Manipulation | True | C++ | Reverse Words in a String | 
| 152 | maxProductSubarray | Medium | Dynamic Programming | False | Python | Maximum Product Subarray | 
| 153 | findMinInRotatedSortedAry | Medium | Binary Search | False | Python | Find Minimum in Rotated Sorted Array | 
| 154 | findMinInRotatedSortedAry II | Hard | Binary Search | False | Python | Find Minimum in Rotated Sorted Array II | 
| 155 | minStack | Medium | Stack | False | Python | Min Stack | 
| 160 | intersecionOf2LL | Easy | LinkedList | False | Python | Intersection of Two Linked Lists | 
| 162 | findPeakElement | Medium | Binary Search | False | Python | Find Peak Element | 
| 164 | maxGap | Hard | Bucket Sort | False | Python | Maximum Gap | 
| 165 | compareVersionNums | Medium | List Traversal | False | Python | Compare Version Numbers | 
| 166 | fractionToDecimal | Medium | Math | True | Python | Fraction to Recurring Decimal | 
| 167 | twoSum II | Medium | Two Pointers | False | Python | Two Sum II - Input Array Is Sorted | 
| 168 | excelSheetColTitle | Easy | Math | False | Python | Excel Sheet Column Title | 
| 169 | majorityElement | Easy | List Traversal | False | Python | Majority Element | 
| 171 | excelSheetColNum | Easy | Math | True | Python, C++ | Excel Sheet Column Number | 
| 172 | factorialTrailingZeroes | Medium | Math | False | Python | Factorial Trailing Zeroes | 
| 173 | BSTIterator | Medium | BST | False | Python | Binary Search Tree Iterator | 
| 174 | dungeonGame | Hard | Dynamic Programming | False | Python | Dungeon Game | 
| 175 | combineTwoTables | Easy | SQL | False | SQL | Combine Two Tables | 
| 176 | secondHighestSalary | Medium | SQL | False | SQL | Second Highest Salary | 
| 177 | NthHighestSalary | Medium | SQL | False | SQL | Nth Highest Salary | 
| 178 | rankScores | Medium | SQL | False | SQL | Rank Scores | 
| 179 | largestNumber | Medium | Sorting | False | Python | Largest Number | 
| 180 | consecutiveNumbers | Medium | SQL | False | SQL | Consecutive Numbers | 
| 181 | employeeWithHigherSalary | Easy | SQL | False | SQL | Employees Earning More Than Their Managers | 
| 182 | duplicateEmails | Easy | SQL | False | SQL | Duplicate Emails | 
| 183 | customersWithoutOrders | Easy | SQL | False | SQL | Customers Who Never Order | 
| 184 | departmentHighestSalary | Medium | SQL | False | SQL | Department Highest Salary | 
| 185 | departmentTop3Salaries | Hard | SQL | False | SQL | Department Top Three Salaries | 
| 187 | repeatedDNASequences | Medium | Sliding Window | False | Python | Repeated DNA Sequences | 
| 188 | bestTimeToBuyAndSell IV | Hard | Dynamic Programming | False | Python | Best Time to Buy and Sell Stock IV | 
| 189 | rotateArray | Medium | Array | False | Python | Rotate Array | 
| 190 | reverseBits | Easy | Bit Manipulation | False | Python | Reverse Bits | 
| 191 | 1BitsCount | Easy | Bit Manipulation | False | Python | Number of 1 Bits | 
| 198 | houseRobber | Medium | Dynamic Programming | False | Python | House Robber | 
| 200 | numIslands | Medium | DFS | False | Python | Number of Islands | 
| 206 | reverseLinkedList | Easy | LinkedList | True | Python | Reverse Linked List | 
| 208 | Trie | Medium | Trie | False | C++ | Implement Trie (Prefix Tree) | 
| 213 | houseRobber 2 | Medium | Dynamic Programming | True | C++ | House Robber II | 
| 215 | kthLargestElementInAry | Medium | Quickselect | True | Python | Kth Largest Element in an Array | 
| 221 | maxSquare | Medium | Dynamic Programming | False | Python | Maximal Square | 
| 290 | wordPattern | Easy | HashMap | False | Python, C++ | Word Pattern | 
| 322 | coinChange | Medium | DFS, Dynamic Programming | False | C++ | Coin Change | 
| 332 | reconstructIternary | Hard | Stack, Backtracking | False | Python | Reconstruct Itinerary | 
| 337 | houseRobber 3 | Medium | DFS Memorization | False | C++ | House Robber III | 
| 359 | loggerRateLimiter | Easy | Hash | False | Python | Logger Rate Limiter | 
| 366 | findLeavesOfBST | Medium | Binary Tree, DFS | False | Python | Find Leaves of Binary Tree | 
| 418 | screenSentenceFitting | Medium | List Traversal | False | Python | Sentence Screen Fitting | 
| 450 | deleteNodeInBST | Medium | BST | False | Python | Delete Node in a BST | 
| 678 | validParenthesisStr | Medium | DFS, Dynamic Programming, Greedy | False | Python | Valid Parenthesis String | 
| 690 | employeeImportance | Easy | BFS, DFS | False | Python | Employee Importance | 
| 696 | countBinarySubstr | Easy | Two Pointers | True | Python | Count Binary Substrings | 
| 735 | asteroidCollision | Medium | Stack | False | Python | Asteroid Collision | 
| 753 | crackSafe | Hard | Backtracking, Hierholzer Algorithm, Eulerian Cycle | True | C++ | Cracking the Safe | 
| 787 | cheapestFlights | Medium | Bellman Ford's Algorithm, Dijkstra's Algorithm, Dynamic Programming | False | C++ | Cheapest Flights Within K Stops | 
| 792 | numOfMatchingSubseq | Medium | Binary Search, Pointer | False | Python | Number of Matching Subsequences | 
| 833 | find&ReplaceInStr | Medium | String Manipulation | False | Python | Find And Replace in String | 
| 843 | guessWord | Hard | Game Theory | False | Python | Guess the Word | 
| 853 | carFleet | Medium | List Traversal | False | Python | Car Fleet | 
| 923 | threeSumMulti | Medium | Two Pointers, Math | True | C++ | 3Sum With Multiplicity | 
| 931 | minFallingPathSum | Medium | Dynamic Programming | False | Python | Minimum Falling Path Sum | 
| 981 | timeBasedKeyValStore | Medium | Binary Search | False | Python | Time Based Key-Value Store | 
| 983 | minCostsForTickets | Medium | Dynamic Programming, DFS | False | Python | Minimum Cost For Tickets | 
| 1004 | maxConsecutiveOnes III | Medium | Sliding Window | False | Python | Max Consecutive Ones III | 
| 1048 | longestStrChain | Medium | Dynamic Programming, DFS | False | Python | Longest String Chain | 
| 1110 | delNodes&ReturnForest | Medium | DFS | False | Python | Delete Nodes And Return Forest | 
| 1146 | snapshotArray | Medium | Binary Search | False | Python | Snapshot Array | 
| 1278 | palindromePartitioning III | Hard | Dynamic Programming, DFS Memorization | True | C++ | Palindrome Partitioning III | 
| 1423 | maxPointsFromCards | Medium | Sliding Window, Two Pointers | False | Python | Maximum Points You Can Obtain from Cards | 
| 1428 | minDaysBloom | Medium | Binary Search | False | Python | Minimum Number of Days to Make m Bouquets | 
| 1509 | minDiffBetMax&Min | Medium | Backtracking | False | Python | Minimum Difference Between Largest and Smallest Value in Three Moves | 
| 1525 | numOfWaysToSplitStr | Medium | HashMap | False | Python | Number of Good Ways to Split a String | 
| 1526 | minNumOfIncrement | Hard | Dynamic Programming | True | Python | Minimum Number of Increments on Subarrays to Form a Target Array | 
| 1548 | mostSimilarPath | Hard | Dynamic Programming | True | Python | The Most Similar Path in a Graph | 
| 1610 | maxNumVisiblePts | Hard | Sliding Window, Geometry | False | Python | Maximum Number of Visible Points | 
| 1776 | carFleet II | Hard | Stack, Monotonic Stack | False | Python | Car Fleet II | 
| 1834 | singleThreadedCPU | Medium | Min-Heap, Priority Queue | False | C++ | Single-Threaded CPU | 
| 1937 | maxPointsWithCost | Medium | Dynamic Programming | False | Python | Maximum Number of Points with Cost | 
| Question | Solution Link | Category | Demo | Language | 
|---|---|---|---|---|
| Permutation of if-blocks | ifBlockPermutations | DFS, Backtracking | False | Python | 
| Image Matching | imageMatching | Stack, DFS | False | Python | 
| Remove B | removeB | DFS | False | Python | 
| Inversion | Inversion | Dynamic Programming, Backtracking | False | Python | 
| Shortest Rainbow Path | shortestRainbowPath | Dijkstra's algorithm | False | Python | 
| Knapsack Problem | knapsack | Genetic Algorithm, Dynamic Programming | False | Python, C++ | 
| Min Health | getMinHealth | Priority Queue | False | Python | 
| Visiting Cities | minCost | Dynamic Programming | False | Python |