Top 10 Toughest Array Problems
π₯ Cracking the Code: Top 10 Toughest Array Problems in Tech Interviews! π₯
Arrays are the bread and butter of coding interviews β but some problems can make even seasoned coders sweat! π¦ In this ultimate guide, weβll break down the 10 most challenging and frequently asked array problems, complete with optimized solutions using smart algorithms and data structures.
Ready to level up your interview game? Letβs go! π
1οΈβ£ Sliding Window Maximum (Maximum of All Subarrays of Size K)
β Problem Statement:
Find the maximum in every contiguous subarray of size k
.
Example:
Input: [1, 3, -1, -3, 5, 3, 6, 7], k = 3
Output: [3, 3, 5, 5, 6, 7]
π‘ Optimized Approach: Deque (O(n))
from collections import deque
def maxSlidingWindow(nums, k):
dq = deque()
res = []
for i, num in enumerate(nums):
while dq and nums[dq[-1]] < num:
dq.pop()
dq.append(i)
if dq[0] == i - k:
dq.popleft()
if i >= k - 1:
res.append(nums[dq[0]])
return res
2οΈβ£ Trapping Rain Water
β Problem Statement:
Calculate how much rainwater can be trapped between bars.
Example:
Input: [0,1,0,2,1,0,1,3,2,1,2,1]
Output: 6
π‘ Optimized Approach: Two Pointers (O(n))
def trap(height):
left, right = 0, len(height) - 1
left_max = right_max = water = 0
while left < right:
if height[left] < height[right]:
left_max = max(left_max, height[left])
water += left_max - height[left]
left += 1
else:
right_max = max(right_max, height[right])
water += right_max - height[right]
right -= 1
return water
3οΈβ£ Find Missing & Repeating Number
β Problem Statement:
In an array of 1 to n, find the missing and duplicate numbers.
Example:
Input: [3, 1, 2, 5, 3]
Output: Missing = 4, Repeating = 3
π‘ Optimized Approach: XOR (O(n))
def findTwoElements(nums):
n = len(nums)
xor_all = 0
for num in nums:
xor_all ^= num
for i in range(1, n + 1):
xor_all ^= i
right_bit = xor_all & -xor_all
x = y = 0
for num in nums:
if num & right_bit:
x ^= num
else:
y ^= num
for i in range(1, n + 1):
if i & right_bit:
x ^= i
else:
y ^= i
return (y, x) if x in nums else (x, y)
4οΈβ£ Maximum Product Subarray
β Problem Statement:
Find the contiguous subarray with the largest product.
Example:
Input: [2, 3, -2, 4]
Output: 6 (from [2, 3])
π‘ Optimized Approach: Track Min & Max (O(n))
def maxProduct(nums):
res = max_p = min_p = nums[0]
for num in nums[1:]:
candidates = (num, max_p * num, min_p * num)
max_p, min_p = max(candidates), min(candidates)
res = max(res, max_p)
return res
5οΈβ£ Merge Intervals
β Problem Statement:
Merge all overlapping intervals.
Example:
Input: [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
π‘ Optimized Approach: Sorting (O(n log n))
def merge(intervals):
intervals.sort()
merged = []
for interval in intervals:
if not merged or merged[-1][1] < interval[0]:
merged.append(interval)
else:
merged[-1][1] = max(merged[-1][1], interval[1])
return merged
6οΈβ£ Longest Consecutive Sequence
β Problem Statement:
Find the length of the longest consecutive elements sequence.
Example:
Input: [100, 4, 200, 1, 3, 2]
Output: 4 (from [1, 2, 3, 4])
π‘ Optimized Approach: HashSet (O(n))
def longestConsecutive(nums):
num_set = set(nums)
longest = 0
for num in num_set:
if num - 1 not in num_set:
current = 1
while num + current in num_set:
current += 1
longest = max(longest, current)
return longest
7οΈβ£ Rotate Image (2D Array Rotation)
β Problem Statement:
Rotate an n x n 2D matrix by 90 degrees clockwise.
Example:
Input: [[1,2,3],[4,5,6],[7,8,9]]
Output: [[7,4,1],[8,5,2],[9,6,3]]
π‘ Optimized Approach: Transpose + Reverse (O(nΒ²))
def rotate(matrix):
n = len(matrix)
for i in range(n):
for j in range(i, n):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
for row in matrix:
row.reverse()
8οΈβ£ Subarray Sum Equals K
β Problem Statement:
Find the total number of subarrays with sum equal to k
.
Example:
Input: [1,1,1], k = 2
Output: 2
π‘ Optimized Approach: Prefix Sum + Hashmap (O(n))
def subarraySum(nums, k):
from collections import defaultdict
prefix = defaultdict(int)
prefix[0] = 1
total = res = 0
for num in nums:
total += num
res += prefix[total - k]
prefix[total] += 1
return res
9οΈβ£ First Missing Positive
β Problem Statement:
Find the smallest missing positive integer.
Example:
Input: [3,4,-1,1]
Output: 2
π‘ Optimized Approach: Cyclic Sort (O(n))
def firstMissingPositive(nums):
n = len(nums)
for i in range(n):
while 1 <= nums[i] <= n and nums[nums[i] - 1] != nums[i]:
nums[nums[i] - 1], nums[i] = nums[i], nums[nums[i] - 1]
for i in range(n):
if nums[i] != i + 1:
return i + 1
return n + 1
π Container With Most Water
β Problem Statement:
Find two lines that form the largest container.
Example:
Input: [1,8,6,2,5,4,8,3,7]
Output: 49 (between 8 and 7)
π‘ Optimized Approach: Two Pointers (O(n))
def maxArea(height):
left, right = 0, len(height) - 1
max_area = 0
while left < right:
max_area = max(max_area, min(height[left], height[right]) * (right - left))
if height[left] < height[right]:
left += 1
else:
right -= 1
return max_area
π― Final Thoughts
Master these 10 essential array problems, and youβll be unstoppable in coding interviews! πͺ Keep practicing, and soon youβll be solving these in your sleep. π΄π»
Which problem gave you the toughest time? Drop a comment below! π
#DSA #CodingInterview #Arrays #Programming #TechPrep #LeetCode #Algorithm #Developer #CodeNewbie #TechInterview
© Lakhveer Singh Rajput - Blogs. All Rights Reserved.