Leetcode Top Interview 🎯

This repository contains solutions to the Leetcode Top Interview 150 problems.

These problems are commonly asked in technical interviews and cover a wide range of topics, including data structures, algorithms, and problem-solving techniques.

Show some ❤️ by starring ⭐ this repository if you like it!

Contact for work, email: chunhthanhde.dev@gmail.com

GitHub stars
GitHub forks
GitHub watchers
linkedin

Table of Contents 📖

What is Leetcode? 🧑‍💻

Leetcode is a popular online platform that provides a collection of coding challenges. Software engineers and interview candidates widely use it to practice coding skills and prepare for technical interviews. Leetcode offers many problems to solve, classified by difficulty level and topic.

About the Top Interview 150 Collection 🏆

The Top Interview 150 collection on Leetcode is a curated set of 150 interview questions that top tech companies frequently ask. These questions are carefully selected to cover essential concepts and algorithms that interviewers expect candidates to be familiar with.

Id
Problem
Difficulty
Signal
Status

Array / String

1

Easy

🟢

2

Easy

🟢

5

Easy

🟢

6

Medium

🟡

9

Medium

🟡

10

Medium

🟡

11

Medium

🟡

14

Medium

🟡

15

Hard

🔴

16

Hard

🔴

17

Easy

🟢

18

Medium

🟡

19

Easy

🟢

22

Medium

🟡

24

Hard

🔴

Two Pointers

25

Easy

🟢

26

Easy

🟢

29

Medium

🟡

Sliding Window

Matrix

34

Medium

🟡

35

Medium

🟡

36

Medium

🟡

37

Medium

🟡

38

Medium

🟡

Hashmap

39

Easy

🟢

40

Easy

🟢

41

Easy

🟢

42

Easy

🟢

43

Medium

🟡

44

Easy

🟢

45

Easy

🟢

Intervals

48

Easy

🟢

49

Medium

🟡

50

Medium

🟡

Stack

52

Easy

🟢

53

Medium

🟡

54

Medium

🟡

56

Hard

🔴

Linked List

57

Easy

🟢

58

Medium

🟡

61

Medium

🟡

65

Medium

🟡

66

Medium

🟡

67

Medium

🟡

Binary Tree General

69

Easy

🟢

70

Easy

🟢

71

Easy

🟢

75

Flatten Binary Tree to Linked List

Medium

🟡

76

Path Sum

Easy

🟢

77

Sum Root to Leaf Numbers

Medium

🟡

78

Binary Tree Maximum Path Sum

Hard

🔴

79

Binary Search Tree Iterator

Medium

🟡

80

Count Complete Tree Nodes

Easy

🟢

81

Lowest Common Ancestor of a Binary Tree

Medium

🟡

Binary Tree BFS

8282

Binary Tree Right Side View

Medium

🟡

83

Average of Levels in Binary Tree

Easy

🟢

84

Binary Tree Level Order Traversal

Medium

🟡

85

Binary Tree Zigzag Level Order Traversal

Medium

🟡

Binary Search Tree

86

Minimum Absolute Difference in BST

Easy

🟢

87

Kth Smallest Element in a BST

Medium

🟡

88

Validate Binary Search Tree

Medium

🟡

Graph General

89

Number of Islands

Medium

🟡

90

Surrounded Regions

Medium

🟡

91

Clone Graph

Medium

🟡

92

Evaluate Division

Medium

🟡

93

Course Schedule

Medium

🟡

94

Course Schedule II

Medium

🟡

Graph BFS

95

Snakes and Ladders

Medium

🟡

96

Minimum Genetic Mutation

Medium

🟡

97

Word Ladder

Hard

🔴

Trie

98

Implement Trie (Prefix Tree)

Medium

🟡

99

Design Add and Search Words Data Structure

Medium

🟡

100

Word Search II

Hard

🔴

Backtracking

101

Letter Combinations of a Phone Number

Medium

🟡

102

Combinations

Medium

🟡

103

Permutations

Medium

🟡

104

Combination Sum

Medium

🟡

105

N-Queens II

Hard

🔴

106

Generate Parentheses

Medium

🟡

107

Word Search

Medium

🟡

Divide & Conquer

108

Convert Sorted Array to Binary Search Tree

Easy

🟢

109

Sort List

Medium

🟡

110

Construct Quad Tree

Medium

🟡

111

Merge k Sorted Lists

Hard

🔴

Kadane's Algorithm

112

Maximum Subarray

Medium

🟡

113

Maximum Sum Circular Subarray

Medium

🟡

Binary Search

114

Search Insert Position

Easy

🟢

115

Search a 2D Matrix

Medium

🟡

116

Find Peak Element

Medium

🟡

117

Search in Rotated Sorted Array

Medium

🟡

118

Find First and Last Position of Element in Sorted Array

Medium

🟡

119

Find Minimum in Rotated Sorted Array

Medium

🟡

120

Median of Two Sorted Arrays

Hard

🔴

Heap

121

Kth Largest Element in an Array

Medium

🟡

122

IPO

Hard

🔴

123

Find K Pairs with Smallest Sums

Medium

🟡

124

Find Median from Data Stream

Hard

🔴

Bit Manipulation

125

Add Binary

Easy

🟢

126

Reverse Bits

Easy

🟢

127

Number of 1 Bits

Easy

🟢

128

Single Number

Easy

🟢

129

Single Number II

Medium

🟡

130

Bitwise AND of Numbers Range

Medium

🟡

Math

131

Palindrome Number

Easy

🟢

132

Plus One

Easy

🟢

133

Factorial Trailing Zeroes

Medium

🟡

134

Sqrt(x)

Easy

🟢

135

Pow(x, n)

Medium

🟡

136

Max Points on a Line

Hard

🔴

1D DP

137

Climbing Stairs

Easy

🟢

138

House Robber

Medium

🟡

139

Word Break

Medium

🟡

140

Coin Change

Medium

🟡

141

Longest Increasing Subsequence

Medium

🟡

Multidimensional DP

142

Triangle

Medium

🟡

143

Minimum Path Sum

Medium

🟡

144

Unique Paths II

Medium

🟡

145

Longest Palindromic Substring

Medium

🟡

146

Interleaving String

Medium

🟡

147

Edit Distance

Medium

🟡

148

Best Time to Buy and Sell Stock III

Hard

🔴

149

Best Time to Buy and Sell Stock IV

Hard

🔴

150

Maximal Square

Medium

🟡

Tips for Solving Problems 💡

SSome helpful strategies to tackle different types of problems in this repository:

Strategy

Description

Example Use Case

Heap for Top K Elements 🔼

Use a Heap to find the top K largest, smallest, or closest elements among N elements. Efficient for problems requiring constant updates.

Finding the top K largest numbers in a list.

Binary Search or Two Pointers for Sorted Input 🔍➡️⬅️

Use Binary Search or Two Pointers for sorted arrays, lists, or matrices to optimize the solution.

Searching for an element in a sorted array.

Backtracking or BFS for Combinations and Permutations 🔄🔍

Use Backtracking or BFS for problems requiring exploration of all combinations or permutations.

Finding all permutations of a set.

BFS or DFS for Trees and Graphs 🌳🔗

Use BFS or DFS for tree or graph-related problems.

Searching a graph or binary tree.

Stack for Converting Recursion to Iteration 📚

Convert recursion problems into iterative solutions using a stack to simulate the call stack.

Performing a recursive search without using recursion.

Optimizing Array Problems 📊

Optimize array problems from O(n²) to O(n) using a HashMap or Set, or to O(n log n) using sorting.

Finding duplicate elements in an array.

Dynamic Programming for Optimization Problems 🚀

Dynamic Programming is essential for problems that involve maximizing or minimizing values, using results from previous subproblems.

Finding the maximum value in a sequence.

Trie for String Manipulation 🔤

For multiple strings or searching for common substrings, use a Trie or HashMap. A Trie is the most suitable data structure when manipulating multiple strings.

Searching or manipulating multiple strings efficiently.

Fast & Slow Pointers for Linked Lists 🔄🏃‍♂️🏃‍♀️

Use Fast & Slow Pointers to efficiently solve LinkedList problems with restricted memory usage, like detecting cycles or finding the middle element.

Detecting cycles or finding the middle of a linked list.

Repository Structure 🗂️

This repository is organized by problem number, with each problem having its own directory.

Inside each problem directory, you will find the solution file(s) along with a README file that provides a problem description, constraints, and additional notes if necessary.

How to Use This Repository 🚀

Navigate through the problem directories to explore solutions. Each directory contains the solution files, including explanations and sample input/output.

You can practice implementing your solutions and compare them with those provided.

Feel free to contribute by submitting your solutions or improvements. Open a pull request to share your contributions.

I recommend contributions for new languages, as currently, the solution is only available in Java 🐛.

Resources 📚

Happy coding and good luck with your interview preparation! 🎉

Last updated

Was this helpful?