Skip to content

neetcode-gh/leetcode

Repository files navigation

Leetcode solutions for 🚀 NeetCode.io

This repo hosts the solutions found on NeetCode.io including the solutions shown on the NeetCode YouTube channel. The site will periodically be updated with new solutions from this repo!


Solutions from these languages will be linked from NeetCode.io:

Python, Java, JavaScript, C++, Go, Swift, C#, TypeScript, Rust, Kotlin, Ruby, C, Scala and Dart

Solutions are also welcome for any other supported language on leetcode.com!

Contributing

Please read the contributing guidlines before opening a PR

To contribute, please fork this repo and open a PR adding a missing solution from the supported languages.

If you would like to have collaborator permissions on the repo to merge your own PRs or review others' PRs please let me know.

Credits

Missing Solutions

Arrays & Hashing

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0217 - Contains Duplicate
0242 - Valid Anagram
1929 - Concatenation of Array
1299 - Replace Elements With Greatest Element On Right Side
0392 - Is Subsequence
0058 - Length of Last Word
0001 - Two Sum
0014 - Longest Common Prefix
0049 - Group Anagrams
0118 - Pascals Triangle
0027 - Remove Element
0929 - Unique Email Addresses
0205 - Isomorphic Strings
0605 - Can Place Flowers
0169 - Majority Element
0496 - Next Greater Element I
0724 - Find Pivot Index
0303 - Range Sum Query - Immutable
0448 - Find All Numbers Disappeared in An Array
1189 - Maximum Number of Balloons
0290 - Word Pattern
0705 - Design HashSet
0706 - Design HashMap
0912 - Sort an Array
0347 - Top K Frequent Elements
0238 - Product of Array Except Self
0036 - Valid Sudoku
0271 - Encode and Decode Strings
0128 - Longest Consecutive Sequence
0075 - Sort Colors
0535 - Encode and Decode TinyURL
0554 - Brick Wall
0122 - Best Time to Buy And Sell Stock II
0560 - Subarray Sum Equals K
1930 - Unique Length 3 Palindromic Subsequences
1963 - Minimum Number of Swaps to Make The String Balanced
2001 - Number of Pairs of Interchangeable Rectangles
2002 - Maximum Product of The Length of Two Palindromic Subsequences
2017 - Grid Game
0438 - Find All Anagrams in a String
0028 - Find The Index of The First Occurrence in a String
0280 - Wiggle Sort
0179 - Largest Number
0523 - Continuous Subarray Sum
0838 - Push Dominoes
0187 - Repeated DNA Sequences
0380 - Insert Delete Get Random O(1)
1461 - Check if a String Contains all Binary Codes of Size K
0304 - Range Sum Query 2D Immutable
0665 - Non Decreasing Array
0041 - First Missing Positive
1822 - Sign of An Array
2215 - Find the Difference of Two Arrays
1603 - Design Parking System
2348 - Number of Zero-Filled Subarrays
2405 - Optimal Partition of String
1396 - Design Underground System
2483 - Minimum Penalty for a Shop
0068 - Text Justification
2306 - Naming a Company

Two Pointers

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0125 - Valid Palindrome
0680 - Valid Palindrome II
1984 - Minimum Difference Between Highest And Lowest of K Scores
1768 - Merge Strings Alternately
0344 - Reverse String
0088 - Merge Sorted Array
0283 - Move Zeroes
0026 - Remove Duplicates From Sorted Array
0080 - Remove Duplicates From Sorted Array II
0167 - Two Sum II Input Array Is Sorted
0015 - 3Sum
0018 - 4Sum
0011 - Container With Most Water
1498 - Number of Subsequences That Satisfy The Given Sum Condition
0189 - Rotate Array
1968 - Array With Elements Not Equal to Average of Neighbors
0881 - Boats to Save People
0042 - Trapping Rain Water

Sliding Window

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0121 - Best Time to Buy And Sell Stock
0219 - Contains Duplicate II
1343 - Number of Sub Arrays of Size K and Avg Greater than or Equal to Threshold
0003 - Longest Substring Without Repeating Characters
0424 - Longest Repeating Character Replacement
0567 - Permutation In String
1838 - Frequency of The Most Frequent Element
0904 - Fruits into Basket
1456 - Maximum Number of Vowels in a Substring of Given Length
1888 - Minimum Number of Flips to Make The Binary String Alternating
0209 - Minimum Size Subarray Sum
0658 - Find K Closest Elements
1658 - Minimum Operations to Reduce X to Zero
0076 - Minimum Window Substring
0239 - Sliding Window Maximum

Stack

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0020 - Valid Parentheses
0682 - Baseball Game
0225 - Implement Stack Using Queues
0155 - Min Stack
0150 - Evaluate Reverse Polish Notation
2390 - Removing Stars From a String
0946 - Validate Stack Sequences
0022 - Generate Parentheses
0735 - Asteroid Collision
0739 - Daily Temperatures
0901 - Online Stock Span
0853 - Car Fleet
0071 - Simplify Path
0394 - Decode String
0402 - Remove K Digits
1209 - Remove All Adjacent Duplicates In String II
0456 - 132 Pattern
0895 - Maximum Frequency Stack
0084 - Largest Rectangle In Histogram

Binary Search

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0704 - Binary Search
0035 - Search Insert Position
0374 - Guess Number Higher Or Lower
0441 - Arranging Coins
0977 - Squares of a Sorted Array
0367 - Valid Perfect Square
0069 - Sqrt(x)
0540 - Single Element in a Sorted Array
1011 - Capacity to Ship Packages
0162 - Find Peak Element
2300 - Successful Pairs of Spells and Potions
0074 - Search a 2D Matrix
0875 - Koko Eating Bananas
2616 - Minimize the Maximum Difference of Pairs
0153 - Find Minimum In Rotated Sorted Array
0033 - Search In Rotated Sorted Array
0081 - Search In Rotated Sorted Array II
0981 - Time Based Key Value Store
0034 - Find First And Last Position of Element In Sorted Array
1898 - Maximum Number of Removable Characters
0116 - Populating Next Right Pointers In Each Node
1268 - Search Suggestions System
0410 - Split Array Largest Sum
0004 - Median of Two Sorted Arrays

Linked List

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0206 - Reverse Linked List
0021 - Merge Two Sorted Lists
0234 - Palindrome Linked List
0203 - Remove Linked List Elements
0083 - Remove Duplicates From Sorted List
0876 - Middle of the Linked List
0160 - Intersection of Two Linked Lists
0143 - Reorder List
2130 - Maximum Twin Sum Of A Linked List
0019 - Remove Nth Node From End of List
1721 - Swapping Nodes in a Linked List
0460 - LFU Cache
0138 - Copy List With Random Pointer
0707 - Design Linked List
1472 - Design Browser History
0002 - Add Two Numbers
0141 - Linked List Cycle
0287 - Find The Duplicate Number
0024 - Swap Nodes In Pairs
0148 - Sort List
0086 - Partition List
0061 - Rotate List
0092 - Reverse Linked List II
0622 - Design Circular Queue
0147 - Insertion Sort List
0725 - Split Linked List in Parts
0146 - LRU Cache
0023 - Merge K Sorted Lists
0025 - Reverse Nodes In K Group

Trees

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0094 - Binary Tree Inorder Traversal
0144 - Binary Tree Preorder Traversal
0145 - Binary Tree Postorder Traversal
0226 - Invert Binary Tree
0104 - Maximum Depth of Binary Tree
0543 - Diameter of Binary Tree
0110 - Balanced Binary Tree
0100 - Same Tree
0572 - Subtree of Another Tree
0108 - Convert Sorted Array to Binary Search Tree
0617 - Merge Two Binary Trees
0112 - Path Sum
0606 - Construct String From Binary Tree
0235 - Lowest Common Ancestor of a Binary Search Tree
0701 - Insert into a Binary Search Tree
0450 - Delete Node in a BST
0102 - Binary Tree Level Order Traversal
0199 - Binary Tree Right Side View
0783 - Minimum Distance between BST Nodes
0101 - Symmetric Tree
1443 - Minimum Time to Collect All Apples in a Tree
0103 - Binary Tree Zigzag Level Order Traversal
0427 - Construct Quad Tree
0652 - Find Duplicate Subtrees
0958 - Check Completeness of a Binary Tree
0106 - Construct Binary Tree from Inorder and Postorder Traversal
0662 - Maximum Width of Binary Tree
1376 - Time Needed to Inform All Employees
1448 - Count Good Nodes In Binary Tree
0098 - Validate Binary Search Tree
0230 - Kth Smallest Element In a Bst
0105 - Construct Binary Tree From Preorder And Inorder Traversal
0096 - Unique Binary Search Trees
0095 - Unique Binary Search Trees II
0129 - Sum Root to Leaf Numbers
0337 - House Robber III
0951 - Flip Equivalent Binary Trees
1993 - Operations On Tree
0894 - All Possible Full Binary Trees
0513 - Find Bottom Left Tree Value
0669 - Trim a Binary Search Tree
0173 - Binary Search Tree Iterator
0538 - Convert Bst to Greater Tree
0124 - Binary Tree Maximum Path Sum
0297 - Serialize And Deserialize Binary Tree

Tries

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0208 - Implement Trie Prefix Tree
0211 - Design Add And Search Words Data Structure
2707 - Extra Characters in a String
0212 - Word Search II

Heap / Priority Queue

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0703 - Kth Largest Element In a Stream
1046 - Last Stone Weight
0973 - K Closest Points to Origin
0215 - Kth Largest Element In An Array
0621 - Task Scheduler
0355 - Design Twitter
1675 - Minimize Deviation in Array
2542 - Maximum Subsequence Score
1834 - Single Threaded Cpu
1845 - Seat Reservation Manager
1882 - Process Tasks Using Servers
1985 - Find The Kth Largest Integer In The Array
0767 - Reorganize String
1405 - Longest Happy String
1094 - Car Pooling
0295 - Find Median From Data Stream
1383 - Maximum Performance of a Team
0502 - IPO

Backtracking

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0078 - Subsets
0039 - Combination Sum
0077 - Combinations
0046 - Permutations
0090 - Subsets II
0040 - Combination Sum II
0047 - Permutations II
0079 - Word Search
0131 - Palindrome Partitioning
0093 - Restore IP Addresses
0017 - Letter Combinations of a Phone Number
0473 - Matchsticks to Square
1849 - Splitting a String Into Descending Consecutive Values
1980 - Find Unique Binary String
1239 - Maximum Length of a Concatenated String With Unique Characters
0698 - Partition to K Equal Sum Subsets
0051 - N Queens
0052 - N Queens II

Graphs

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0463 - Island Perimeter
0953 - Verifying An Alien Dictionary
0200 - Number of Islands
0133 - Clone Graph
0695 - Max Area of Island
1905 - Count Sub Islands
0417 - Pacific Atlantic Water Flow
0130 - Surrounded Regions
1466 - Reorder Routes to Make All Paths Lead to The City Zero
0994 - Rotting Oranges
0286 - Walls And Gates
0909 - Snakes And Ladders
0752 - Open The Lock
0802 - Find Eventual Safe States
0207 - Course Schedule
0210 - Course Schedule II
1462 - Course Schedule IV
1958 - Check if Move Is Legal
0934 - Shortest Bridge
1091 - Shortest Path in Binary Matrix
0684 - Redundant Connection
0323 - Number of Connected Components In An Undirected Graph
0261 - Graph Valid Tree
0721 - Accounts Merge
2359 - Find Closest Node to Given Two Nodes
1162 - As Far from Land as Possible
1129 - Shortest Path with Alternating Colors
2477 - Minimum Fuel Cost to Report to the Capital
2492 - Minimum Score of a Path Between Two Cities
1254 - Number of Closed Islands
1020 - Number of Enclaves
1557 - Minimum Number of Vertices to Reach all Nodes
0785 - Is Graph Bipartite?
0399 - Evaluate Division
2101 - Detonate the Maximum Bombs
1857 - Largest Color Value in a Directed Graph
1553 - Minimum Number of Days to Eat N Oranges
0127 - Word Ladder

Advanced Graphs

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
1631 - Path with Minimum Effort
0332 - Reconstruct Itinerary
1584 - Min Cost to Connect All Points
0743 - Network Delay Time
1514 - Path with Maximum Probability
0778 - Swim In Rising Water
0269 - Alien Dictionary
0787 - Cheapest Flights Within K Stops
2421 - Number of Good Paths
1579 - Remove Max Number of Edges to Keep Graph Fully Traversable
1489 - Find Critical and Pseudo Critical Edges in Minimum Spanning Tree

1-D Dynamic Programming

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0070 - Climbing Stairs
0746 - Min Cost Climbing Stairs
0198 - House Robber
0213 - House Robber II
0005 - Longest Palindromic Substring
0647 - Palindromic Substrings
0091 - Decode Ways
0322 - Coin Change
0152 - Maximum Product Subarray
0139 - Word Break
0300 - Longest Increasing Subsequence
0416 - Partition Equal Subset Sum
0120 - Triangle
0740 - Delete And Earn
0256 - Paint House
0377 - Combination Sum IV
0279 - Perfect Squares
2369 - Check if There is a Valid Partition For The Array
1856 - Maximum Subarray Min Product
0983 - Minimum Cost For Tickets
0343 - Integer Break
0673 - Number of Longest Increasing Subsequence
0691 - Stickers to Spell Word
1137 - N-th Tribonacci Number
1035 - Uncrossed Lines
2140 - Solving Questions With Brainpower
2466 - Count Ways to Build Good Strings
0837 - New 21 Game
1626 - Best Team with no Conflicts
1406 - Stone Game III
0472 - Concatenated Words
1799 - Maximize Score after N Operations
1964 - Find the Longest Valid Obstacle Course at Each Position
1359 - Count all Valid Pickup and Delivery Options

2-D Dynamic Programming

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0062 - Unique Paths
0063 - Unique Paths II
1143 - Longest Common Subsequence
0516 - Longest Palindromic Subsequence
1049 - Last Stone Weight II
0309 - Best Time to Buy And Sell Stock With Cooldown
0518 - Coin Change II
0494 - Target Sum
0097 - Interleaving String
0877 - Stone Game
0064 - Minimum Path Sum
0329 - Longest Increasing Path In a Matrix
0221 - Maximal Square
0474 - Ones and Zeroes
5782 - Maximum Alternating Subsequence Sum
0115 - Distinct Subsequences
0072 - Edit Distance
1220 - Count Vowels Permutation
0312 - Burst Balloons
1866 - Number of Ways to Rearrange Sticks With K Sticks Visible
0010 - Regular Expression Matching
1140 - Stone Game II
0926 - Flip String to Monotone Increasing
2218 - Maximum Value of K Coins from Piles
0920 - Number of Music Playlists
1639 - Number of Ways to Form a Target String Given a Dictionary
0879 - Profitable Schemes
1547 - Minimum Cost to Cut a Stick

Greedy

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0053 - Maximum Subarray
0918 - Maximum Sum Circular Subarray
0978 - Longest Turbulent Array
0055 - Jump Game
0045 - Jump Game II
1871 - Jump Game VII
0134 - Gas Station
0846 - Hand of Straights
2439 - Minimize Maximum of Array
0649 - Dota2 Senate
1423 - Maximum Points You Can Obtain From Cards
1899 - Merge Triplets to Form Target Triplet
0763 - Partition Labels
0678 - Valid Parenthesis String
1921 - Eliminate Maximum Number of Monsters
1029 - Two City Scheduling
0646 - Maximum Length of Pair Chain
1647 - Minimum Deletions to Make Character Frequencies Unique
135- - Candy

Intervals

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0057 - Insert Interval
0056 - Merge Intervals
0435 - Non Overlapping Intervals
0252 - Meeting Rooms
0253 - Meeting Rooms II
1288 - Remove Covered Intervals
1851 - Minimum Interval to Include Each Query
0352 - Data Stream as Disjoint Intervals

Math & Geometry

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0168 - Excel Sheet Column Title
1071 - Greatest Common Divisor of Strings
1523 - Count Odd Numbers in an Interval Range
1572 - Matrix Diagonal Sum
0149 - Maximum Points on a Line
0048 - Rotate Image
0054 - Spiral Matrix
0059 - Spiral Matrix II
0073 - Set Matrix Zeroes
0202 - Happy Number
0066 - Plus One
0009 - Palindrome Number
0263 - Ugly Number
1260 - Shift 2D Grid
0013 - Roman to Integer
0012 - Integer to Roman
0050 - Pow(x, n)
0043 - Multiply Strings
2013 - Detect Squares
1041 - Robot Bounded In Circle
0006 - Zigzag Conversion
2028 - Find Missing Observations

Bit Manipulation

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
0136 - Single Number
0191 - Number of 1 Bits
0338 - Counting Bits
0190 - Reverse Bits
0268 - Missing Number
1470 - Shuffle the Array
0989 - Add to Array-Form of Integer
0371 - Sum of Two Integers
0007 - Reverse Integer
0067 - Add Binary

JavaScript

Problem articles C C++ C# Dart GO Java JS Kotlin Python Ruby Rust Scala Swift TS
2667 - Create Hello World Function
2620 - Counter
2665 - Counter II
2635 - Apply Transform over each Element in Array
2634 - Filter Elements from Array
2626 - Array Reduce Transformation
2629 - Function Composition
2666 - Allow One Function Call
2623 - Memoize
2632 - Curry
2621 - Sleep
2637 - Promise Time Limit
2636 - Promise Pool
2622 - Cache With Time Limit
2627 - Debounce
2676 - Throttle
2628 - JSON Deep Equal
2633 - Convert Object to JSON String
2675 - Array of Objects to Matrix
2700 - Difference Between Two Objects
2677 - Chunk Array
2625 - Flatten Deeply Nested Array
2619 - Array Prototype Last
2631 - Group By
2618 - Check if Object Instance of Class
2693 - Call Function with Custom Context
2694 - Event Emitter
2695 - Array Wrapper
2648 - Generate Fibonacci Sequence
2649 - Nested Array Generator

Need to update the README? Update the template instead.