Contributors helped us in providing these Awesome solutions.
If you want to contribute, please create a Pull Request. If you are new to Github please check pull request procedure ---> PR process
Check out ---> Sample PR
- There are new LeetCode questions every week. I'll keep updating for full summary and better solutions.
- For more challenging problem solutions, you can also see our HackerRank-Solutions, ProjectEuler repositories.
- Hope you enjoy the journey of learning data structures and algorithms.
- Notes: "🔒" means your subscription of LeetCode premium membership is required for reading the question.
Check out -> Learning Resources
- Bit Manipulation
- Array
- String
- Linked List
- Stack
- Queue
- Heap
- Tree
- Hash Table
- Math
- Two Pointers
- Sort
- Recursion
- Binary Search
- Binary Search Tree
- Breadth-First Search
- Depth-First Search
- Backtracking
- Dynamic Programming
- Greedy
- Graph
- Geometry
- Simulation
- Design
- Concurrency
# | Title | Solution | Time | Space | Difficulty | Tag | Tutorial |
---|---|---|---|---|---|---|---|
136 | Single Number | Java Python C++ JavaScript |
O(n) | O(1) | Easy | Using XOR | |
137 | Single Number II | Python C++ |
O(n) | O(1) | Medium | ||
260 | Single Number III | Python C++ |
O(n) | O(1) | Medium | ||
371 | Sum of Two Integers | Java | O(1) | O(1) | Medium | ||
476 | Number Complement | Java C++ |
O(1) | O(1) | Easy | Tutorial | |
520 | Detect Capital Use | Python C++ |
O(n) | O(1) | Easy | ||
1486 | XOR Operation in an Array | Java C++ |
O(n) | O(1) | Easy | Using XOR |
# | Title | Solution | Time | Space | Difficulty | Tag | Tutorial |
---|---|---|---|---|---|---|---|
973 | K Closest Points to Origin | C++ | O(n) | O(1) | Medium |
# | Title | Solution | Time | Space | Difficulty | Note | Video Explaination |
---|---|---|---|---|---|---|---|
11 | Container with Most Water | Python | O(N) | O(N) | Medium | Array Two Pointers | |
15 | 3 Sum | Python | O( nLog(n) ) | O(1) | Medium | Array | |
27 | Remove-Element | C++ | O(N) | O(1) | Easy | Array | |
36 | Valid Sudoku | Java | O(N^2) | O(N) | Medium | Array, 2D Matrix | |
42 | Trapping Rain Water | Python | O(N^2) | O(N) | Hard | Array | |
53 | Maximum Subarray | C++ | O(N) | O(1) | Easy | Array | |
54 | Spiral Matrix | C++ | O(M*N) | O(M*N) | Medium | Array | |
56 | Merge Intervals | Python | O(nlogn) | O(n) | Medium | Intervals | |
73 | Set-Matrix-Zeroes | Java | O(MN) | O(1) | Medium | Array | |
118 | Pascal's Triangle | Java | O(N^2) | O(N) | Easy | ||
119 | Pascal's Triangle II | Python | O(N^2) | O(K) | Easy | ||
122 | Best Time to buy and sell Stock II | Python C++ |
O(N) | O(1) | Medium | Stocks | |
124 | Permutation by Recussion | Java | O(N) | O(N) | Easy | Array | |
152 | Maximum Product Subarray | Javascript | O(n) | O(n) | Medium | Array | |
162 | Find Peak element | javascript | o(Logn) | O(1) | Medium | Array | |
189 | Rotate-Array | Python | O(N) | O(1) | Medium | Array | |
238 | Product of Array Except Self | C++ | O(N) | O(N) | Medium | Array | |
268 | Missing Number | Java | O(n) | O(1) | Easy | Array | Tutorial |
283 | Move-Zeroes | C++ | O(N) | O(1) | Easy | Array | |
495 | Teemo Attacking | C++ | O(n) | O(1) | Medium | Array | |
496 | next-greater-element-i | Python | O(N) | O(1) | Medium | Array | |
532 | K-diff Pairs in an Array | C++ | O(n) | O(n) | Medium | Array | |
697 | Degree of an Array | Java | O(n) | O(n) | Easy | Array | |
811 | Subdomain Visit Count | Javascript | O(N*M) | O(N*M + N) | Easy | ||
1089 | Duplicate Zeroes | JavaScript | O(n) | O(n) | Easy | Array | |
1134 🔒 | Armstrong Number | Java | O(N) | O(1) | Easy | ||
1200 | Minimum Absolute Difference | Python | O(n) | O(1) | Easy | Array | |
1288 | Remove-Covered-Intervals | C++ | O(N*N) | O(1) | Medium | Array | |
1470 | Shuffle the Array | Java | O(N) | O(1) | Easy | Array |
| 1480 | Running Sum of 1d Array | Java | O(N) | O(N) | Easy | Simple sum | |
| 1502 | Can Make Arithmetic Progression From Sequence | Java | O(n) | O(1) | Easy | Array | | | 1512 | Number of Good Pairs | Java | O(N^2) | O(1) | Easy | Array | | 1534 | Count Good Triplets | Python | O(N^3) | O(1) | Easy | | | | 1572 | Matrix Diagonal Sum | Java | O(N) | O(1) | Easy | | |
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
3 | Longest Substring Without Repeating Characters | Python | O(n) | O(n) | Medium | Hash Table Sliding Window |
Open for improvisation, mentioned time and space complexities unconfirmed |
8 | String to Integer (atoi) | Java | O(n) | O(1) | Medium | ||
9 | Palindrome Number | Java | O(n) | O(1) | Easy | ||
151 | Reverse Words in a String | Java | O(1) | O(n) | Medium | ||
383 | Ransom Note | Java | O(1) | O(n) | Easy | Character Count | |
387 | First Unique Character in a String | Java | O(n) | O(1) | Easy | Character Count | |
520 | Detect Capital Use | Java | O(n) | O(1) | Easy | ||
767 | Reorganize String | Python | O(n) | O(n) | Medium | ||
859 | Buddy Strings | Java | O(n) | O(1) | Easy | ||
1221 | Split a String in Balanced Strings | Python | O(n) | O(1) | Easy | ||
1374 | Generate a String With Characters That Have Odd Counts | Java | O(n) | O(1) | Easy | ||
1614 | Maximum Nesting Depth of the Parentheses | Java | O(n) | O(1) | Easy |
# | Title | Solution | Time | Space | Difficulty | Tag | Tutorial |
---|---|---|---|---|---|---|---|
2 | Add Two Numbers | Java | O(n) | O(n) | Medium | Math | |
19 | Remove Nth Node From End of List | Java | O(n) | O(1) | Medium | Two pointers | |
23 | Merge K sorted lists | C++ | O(nlogn) | O(n) | Hard | sorting and append | |
24 | Swap Nodes in Pairs | C++ | O(n) | O(1) | Medium | Two pointers | |
109 | Convert Sorted List to Binary Search Tree | Java | O(n) | O(n) | Medium | LinkedList | |
141 | Linked List Cycle | Java | O(n) | O(1) | Easy | Slow-Fast Pointers | |
142 | Linked List Cycle II | Java C++ |
O(n) | O(1) | Medium | Slow-Fast Pointers | |
143 | Reorder List | C++ | O(n) | O(n) | Medium | Iteration and Stack | |
146 | LRU Cache | C++ Python |
O(1) | O(k) | Medium | Hash Map | |
160 | Intersection of Two Linked Lists | Java | O(n) | O(1) | Easy | Two Pointers | Tutorial |
186 | Middle of the Linked List | Java | O(n) | O(1) | Easy | Two pointers |
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
20 | Valid Parentheses | Python C++Java | O(n) | O(n) | Easy | Stack | |
32 | Longest Valid Parentheses | Python | O(n) | O(n) | Hard | Stack | |
84 | Largest Rectangle in Histogram | C++ | O(n) | O(n) | Hard | Stack | |
94 | Binary Tree Inorder Traversal | Python | O(n) | O(n) | Medium | Recursion, Binary Tree | |
150 | Evaluate Reverse Polish Notation | Python Java |
O(n) | O(1) | Medium | Stack | |
394 | Decode String | C++ | O(n) | O(1) | Medium | Stack | |
682 | Baseball Game | C++ | O(n) | O(n) | Easy | Stack | |
735 | Asteroid Collision | C++ | O(n) | O(1) | Medium | Stack | |
921 | Minimum Add to Make Parentheses Valid | C++ | O(n) | O(1) | Medium | Stack | |
1047 | Remove All Adjacent Duplicates In String | C++ | O(n) | O(n) | Easy | Stack | |
1249 | Minimum Remove to Make Valid Parentheses | C++ | O(n) | O(n) | Medium | Stack | |
1381 | Design a Stack With Increment Operation | Java | O(n) | O(n) | Medium | Stack | |
1598 | Crawler Log Folder | C++ | O(n) | O(n) | Easy | Stack |
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
621 | Task Scheduler | Python | O(n) | O(n) | Medium | Queue | |
622 | Design Circular Queue | Python | O(n) | O(n) | Medium | Queue | |
641 | Design Circular Deque | Java | O(n) | O(n) | Medium | Queue, Design | |
933 | Number of Recent Calls | C++ | O(1) | O(1) | Easy | Queue, Sliding Window |
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
94 | Binary Tree Inorder Traversal | Java Python |
O(n) | O(logn) | Medium | Binary Tree, Stack, HashTable | |
98 | Validate Binary Search Tree | Javascript | O(log(n)) | O(log(n)) | Medium | Binary Tree | |
100 | Same Tree | Python Java |
O(n) | O(n) | Easy | Tree, Depth-first Search | |
101 | Symmetric Tree | Java Python |
O(n) | O(n) | Easy | Tree, Breadth-first Search, Depth-first Search | |
102 | Binary Tree Level Order Traversal | C++ | O(n) | O(n) | Medium | Binary Tree, map | |
103 | ZigZag Level Order | JavaScript C++ |
O(n) | O(n) | Medium | Binary Tree | |
124 | Binary Tree Maximum Path Sum | C++ | O(n) | O(n) | Hard | Tree | |
129 | Sum Root to Leaf Numbers | Java | O(n) | O(logn) | Medium | Binary Tree, Depth First Search | |
144 | Binary Tree Preorder Traversal | Java | O(n) | O(logn) | Medium | Binary Tree, Stack | |
145 | Binary Tree Postorder Traversal | Java | O(n) | O(logn) | Hard | Binary Tree, Stack | |
307 | Range Sum Query - Mutable | Java | O(logn) | O(n) | Medium | Segment Tree | |
684 | Redundant Connection | Java | O(N) | O(N) | Medium | Tree, Union Find | |
919 | Complete Binary Tree Inserter | Java | O(n) | O(n) | Medium | Tree | |
968 | Binary Tree Cameras | C++ | O(n) | O(logn) | Hard | Binary Tree, Dynamic Programming | |
1028 | Recover a Tree From Preorder Traversal | C++ | O(n) | O(n) | Hard | Tree |
# | Title | Solution | Time | Space | Difficulty | Tag | Video Explanation |
---|---|---|---|---|---|---|---|
1 | Two Sum | Java Python C++ |
O(N) | O(N) | Easy | Tutorial | |
49 | Group Anagrams | Python | O(nlogn) | O(1) | Easy | ||
146 | LRU Cache | Java | Medium | ||||
146 | LRU Cache | Javascript | O(log(n)) | O(n) | Medium | ||
217 | Contains Duplicate | Python | O(n) | O(n) | |||
242 | Valid Anagram | Java | O(n) | O(1) | Easy | Tutorial | |
554 | Brick Wall | C++ | O(n) | O(n) | Medium | ||
554 | Brick Wall | C++ | O(n) | O(n) | Medium | ||
389 | Find The Difference | C++ | O(n) | O(1) | Easy |
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
4 | Median of Two Sorted Arrays | Java | O(log(min(m,n))) | O(1) | Hard | ||
5 | Longest Palindromic Substring | Python JavaScript |
O(N^2) O(N^2) |
O(N) O(1) |
Medium | Expand the Wings | |
15 | 3 Sum | C++ | O(N) | O(1) | Medium | Two Pointer | |
21 | Merge Two Sorted Lists | C++ | O(N) | O(1) | Easy | Two Pointer | |
845 | Longest Mountain in Array | C++ | O(N) | O(1) | Medium | Two Pointer |
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
7 | Reverse Integer | Java C++ |
O(n) | O(n) | Easy | Math | |
12 | Integer to Roman | Java | O(n) | O(1) | Medium | Math | |
13 | Roman to Integer | Java C++ |
O(n) | O(1) | Easy | Math | |
14 | Arithmetic Subarrays | Java | O(m*n) | O(n) | Medium | Math | Pattern Count |
50 | Pow(x, n) | Python JavaScript |
O(n) | O(1) | Medium | Math | |
168 | Excel Sheet Column Title | C++ | O(n) | O(n) | Easy | String | |
171 | Excel Sheet Column Number | C++ | O(n) | O(1) | Easy | String | |
202 | Happy Number | Java | O(n^2) | O(n) | Easy | Math | |
204 | Count Primes | C++ | O(n(log(logn))) | O(n) | Easy | Math | |
263 | Ugly Number | Java | O(n) | O(n) | Easy | Math | |
326 | Power of Three | Java | O(logn) | O(n) | Easy | Math | |
412 | Fizz Buzz | Java | O(n) | O(n) | Easy | Math | |
991 | Broken Calculator | Java | O(n) | O(n) | Medium | Math | |
1518 | Water Bottles | Java | O(n) | O(n) | Easy | Math | |
1822 | Sign Of Product | Java | O(n) | O(n) | Easy | Math | |
1837 | Sum of Digits in Base K | Python | O(n) | O(1) | Easy | Math |
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
100 | Same Tree | C++ | O(N) | O(N) | Easy | BFS | |
111 | Min Depth of Binary Tree | JavaScript | O(nlogn) | O(nlogn) | Easy | BFS | |
127 | Word Ladder | Java | O(N^2 * M) | O(N * M) | Medium | BFS | |
200 | Number of Islands | Java | O(R * C) | O(R * C) | Medium | BFS | |
743 | Network Delay Time | C++ | O(V+E)) | O(V) | Medium | BFS | |
994 | Rotten Oranges | Python | O(N * M) | O(N * M) | Medium | BFS | |
1284 | Minimum Number of Flips to Convert Binary Matrix to Zero Matrix | C++ | O(m * n * 2 ^ (m * n)) | O(2 ^ (m * n)) | Hard | BFS |
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
104 | Maximum Depth of Binary Tree | python | O(n) | O(n) | Easy | DFS | |
110 | Balanced Binary Tree | Java | O(n) | O(n) | Easy | DFS | |
112 | Path Sum | Java | O(n) | O(n) | Easy | DFS | |
200 | Number of Islands | C++ | O(m * n) | O(m * n) | Medium | DFS | |
1376 | Time Needed to Inform All Employees | C++ | O(n) | O(n) | Medium | DFS | |
1463 | Cherry Pickup II | C++ | O(n * m) | O(n * m) | Hard | DFS |
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
17 | Letter Combinations of a Phone Number | C++ | O(4^n) | O(n) | Medium | String, Hash Table, Backtracking | |
37 | Sudoku Solver | C++ | O(n^2) | O(1) | Hard | Hash Table | |
39 | Combination Sum | C++ | O(2^n) | O(n) | Medium | Array, Backtracking | |
980 | Unique Paths III | C++ | O(R * C * 2 ^ (R * C)) | O(R * C) | Hard | DFS, Memoization |
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
55 | Jump Game | Python | O(N) | O(N) | Medium | DP | |
56 | Wildcard Matching | Python | O(n^2) | O(n^2) | Hard | ||
70 | Climbing Stairs | Java | O(N) | O(1) | Easy | DP | |
72 | Edit Distance | Python | O(N*M) | O(n^2) | Medium | Levenshtein Distance | |
91 | Decode ways | Python | O(N) | O(N) | Easy | DP | |
139 | Word Break | Python | O(n^3) | O(n) | Medium | DP | |
174 | Dungeon Game | C++ | O(M*N) | O(M*N) | Hard | Dynamic Programming | |
343 | Integer Break | C++ | O(n^2) | O(n) | Medium | ||
416 | Partition Equal Subset Sum | C++ | O(n^2) | O(n^2) | Medium | DP | |
730 | Count Different Palindromic Subsequences | C++ | O(N*N) | O(N*N) | Hard | DP | |
1025 | Divisor Game | Python | O(N^2) | O(N) | Easy | DP | |
1092 | Shortest Common Supersequence | C++ | O(n^2) | O(n^2) | Hard | DP |
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
33 | Search in Rotated Sorted Array | Python | O(logn) | O(1) | Medium | Binary Search | |
35 | Search Insert Position | Python | O(logn) | O(1) | Easy | Binary Search | |
153 | Find Minimum in Rotated Sorted Array | Python | O(logn) | O(1) | Medium | Binary Search | |
278 | First Bad Version | Java JavaScript |
O(logn) | O(1) | Easy | Binary Search | |
704 | Binary Search | C++ | O(logn) | O(1) | Easy | Binary Search |
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
113 | Path Sum II | C++ | O(V+E) | O(V) | Medium | Graph | DFS |
207 | Course Schedule | C++ | O(V+E) | O(V+E) | Medium | Graph | Cycle Detection in Directed Graph |
210 | Course Schedule II | C++ | O(V+E) | O(V) | Medium | Graph | BFS |
785 | Is Graph Bipartite? | C++ | O(V+E) | O(V) | Medium | Graph | BFS |
797 | All Paths From Source to Target | Java | O(N^2) | O(N) | Medium | Graph | DFS |
934 | Shortest Bridge | C++ | O(V) | O(V) | Medium | Graph | DFS + BFS |
947 | Most Stones Removed with Same Row or Column | C++ | O(V) | O(2V) | Medium | Graph | Union Find |
1042 | Flower Planting with No Adjacent | Python | O(V+E) | O(2V+E) | Medium | Graph | Graph Coloring |
1192 | Critical Connections in a Network | C++ | O(V+E) | O(4V+E) | Hard | Graph | Tarjan's Algorithm |
1627 | Graph Connectivity with Threshold | Java | O(V.logV + Q) | O(V) | Hard | Graph | Union Find + Sieve |
1631 | Path with Minimum Effort | Java | O(V^2) | O(V) | Medium | Graph | Dijkstra's Shortest Path |
# | Title | Solution | Time | Space | Difficulty | Tag | Note |
---|---|---|---|---|---|---|---|
416 | 132 Pattern | Medium | Geometry | ||||
618 | Students Report By Geography | Hard | Geometry |
1.) Cracking the Coding Interview (Indian Edition)
2.) Data Structures and Algorithms Made Easy in Java
3.) Data Structure and Algorithmic Thinking with Python
4.) Head First Design Patterns
5.) Dynamic Programming for Coding Interviews
DISCLAIMER: This above mentioned resources have affiliate links, which means if you buy one of the product from my links, I’ll receive a small commission. This helps support the channel and allows us to continue to add more tutorial. Thank you for the support!