LeetCode Top 150 Interview Questions – Easy Problems with Simple Logic

LeetCode Top 150 Interview Questions – Easy (1 to 50)
The LeetCode Top 150 interview questions are the most commonly asked coding problems in technical interviews.
This article covers questions 1 to 50 (easy level) with clear logic and simple answers.
ARRAY & HASHING (1–15)
1. Two Sum
Use hashmap to store visited numbers.
function twoSum(nums,target){
const map={};
for(let i=0;i<nums.length;i++){
let diff=target-nums[i];
if(map[diff]!==undefined) return [map[diff],i];
map[nums[i]]=i;
}}
2. Contains Duplicate
Compare array length with Set size.
function containsDuplicate(nums){
return new Set(nums).size!==nums.length;
}
3. Best Time to Buy and Sell Stock
function maxProfit(prices){
let min=prices[0],profit=0;
for(let i=1;i<prices.length;i++){
min=Math.min(min,prices[i]);
profit=Math.max(profit,prices[i]-min);
}
return profit;
}
4. Maximum Subarray
function maxSubArray(nums){
let max=nums[0],sum=0;
for(let n of nums){
sum=Math.max(n,sum+n);
max=Math.max(max,sum);
}
return max;
}
5. Majority Element
function majorityElement(nums){
let count=0,candidate;
for(let n of nums){
if(count===0) candidate=n;
count+=n===candidate?1:-1;
}
return candidate;
}
6. Move Zeroes
function moveZeroes(nums){
let idx=0;
for(let n of nums) if(n!==0) nums[idx++]=n;
while(idx<nums.length) nums[idx++]=0;
}
7. Plus One
function plusOne(digits){
for(let i=digits.length-1;i>=0;i--){
if(digits[i]<9){digits[i]++;return digits;}
digits[i]=0;
}
return [1,...digits];
}
8. Remove Duplicates from Sorted Array
function removeDuplicates(nums){
let k=1;
for(let i=1;i<nums.length;i++)
if(nums[i]!==nums[i-1]) nums[k++]=nums[i];
return k;
}
9. Intersection of Two Arrays II
function intersect(a,b){
let map={},res=[];
for(let n of a) map[n]=(map[n]||0)+1;
for(let n of b){
if(map[n]>0){res.push(n);map[n]--;}
}
return res;
}
10. Missing Number
function missingNumber(nums){
let sum=nums.length;
for(let i=0;i<nums.length;i++) sum+=i-nums[i];
return sum;
}
11. Single Number
function singleNumber(nums){
return nums.reduce((a,b)=>a^b);
}
12. Rotate Array
function rotate(nums,k){
k%=nums.length;
nums.unshift(...nums.splice(nums.length-k));
}
13. Valid Anagram
function isAnagram(s,t){
if(s.length!==t.length) return false;
let map={};
for(let c of s) map[c]=(map[c]||0)+1;
for(let c of t){ if(!map[c]--) return false;}
return true;
}
14. Pascal’s Triangle
function generate(n){
let res=[];
for(let i=0;i<n;i++){
res[i]=Array(i+1).fill(1);
for(let j=1;j<i;j++)
res[i][j]=res[i-1][j-1]+res[i-1][j];
}
return res;
}
15. Reshape the Matrix
function matrixReshape(mat,r,c){
let flat=mat.flat();
if(flat.length!==r*c) return mat;
let res=[];
for(let i=0;i<r;i++)
res.push(flat.splice(0,c));
return res;
}
TWO POINTERS (16–25)
16. Valid Palindrome
function isPalindrome(s){
s=s.toLowerCase().replace(/[^a-z0-9]/g,"");
let l=0,r=s.length-1;
while(l<r) if(s[l++]!==s[r--]) return false;
return true;
}
17. Two Sum II
function twoSum(nums,target){
let l=0,r=nums.length-1;
while(l<r){
let sum=nums[l]+nums[r];
if(sum===target) return [l+1,r+1];
sum<target?l++:r--;
}
}
18. Container With Most Water
function maxArea(h){
let l=0,r=h.length-1,max=0;
while(l<r){
max=Math.max(max,Math.min(h[l],h[r])*(r-l));
h[l]<h[r]?l++:r--;
}
return max;
}
19. Reverse String
function reverseString(s){
let l=0,r=s.length-1;
while(l<r)[s[l++],s[r--]]=[s[r],s[l]];
}
20. Remove Element
function removeElement(nums,val){
let k=0;
for(let n of nums) if(n!==val) nums[k++]=n;
return k;
}
STACK (26–35)
21. Valid Parentheses
function isValid(s){
let stack=[],map={")":"(","]":"[","}":"{"};
for(let c of s){
if(map[c]){if(stack.pop()!==map[c]) return false;}
else stack.push(c);
}
return stack.length===0;
}
22. Min Stack
class MinStack{
constructor(){this.stack=[];}
push(val){
let min=this.stack.length?Math.min(val,this.getMin()):val;
this.stack.push({val,min});
}
pop(){this.stack.pop();}
top(){return this.stack[this.stack.length-1].val;}
getMin(){return this.stack[this.stack.length-1].min;}
}
SLIDING WINDOW (36–45)
23. Longest Substring Without Repeating Characters
function lengthOfLongestSubstring(s){
let set=new Set(),l=0,max=0;
for(let r=0;r<s.length;r++){
while(set.has(s[r])) set.delete(s[l++]);
set.add(s[r]);
max=Math.max(max,r-l+1);
}
return max;
}
24. Maximum Average Subarray
function findMaxAverage(nums,k){
let sum=0;
for(let i=0;i<k;i++) sum+=nums[i];
let max=sum;
for(let i=k;i<nums.length;i++){
sum+=nums[i]-nums[i-k];
max=Math.max(max,sum);
}
return max/k;
}
LINKED LIST & MATH (46–50)
25. Reverse Linked List
function reverseList(head){
let prev=null;
while(head){
let next=head.next;
head.next=prev;
prev=head;
head=next;
}
return prev;
}
26. Merge Two Sorted Lists
function mergeTwoLists(l1,l2){
let dummy=new ListNode(0),cur=dummy;
while(l1&&l2){
if(l1.val<l2.val){cur.next=l1;l1=l1.next;}
else{cur.next=l2;l2=l2.next;}
cur=cur.next;
}
cur.next=l1||l2;
return dummy.next;
}
27. Fibonacci Number
function fib(n){
let a=0,b=1;
for(let i=2;i<=n;i++) [a,b]=[b,a+b];
return n?b:a;
}
28. Power of Two
function isPowerOfTwo(n){
return n>0&&(n&(n-1))===0;
}
29. Count Primes
function countPrimes(n){
let prime=Array(n).fill(true);
prime[0]=prime[1]=false;
for(let i=2;i*i<n;i++)
if(prime[i])
for(let j=i*i;j<n;j+=i) prime[j]=false;
return prime.filter(Boolean).length;
}
30. Climbing Stairs
function climbStairs(n){
let a=1,b=1;
for(let i=2;i<=n;i++) [a,b]=[b,a+b];
return b;
}
Final Note
These LeetCode Top 150 interview questions (1–50) build the strongest foundation for coding interviews.
Master these patterns before moving to medium and advanced problems.
Next: LeetCode Top 150 Interview Questions (51–100)
Once you are comfortable with the easy LeetCode interview questions (1–50),
the next step is to move to medium-level problems that test deeper logic,
data structures, and problem-solving skills.
Continue your preparation with:
LeetCode Top 150 Interview Questions (51–100) – Medium Level with Logic
This next part focuses on binary search, linked lists, trees, recursion,
and common patterns frequently asked in real coding interviews.

