company prep
Amazon
Problems frequently reported at Amazon, in course order. Solve the must-dos first.
79 easy189 medium46 hardFrequency counting ×17In-place linked-list rewiring ×16Hash lookup (seen before?) ×14Simulation ×13Two pointers (opposite ends) ×11Union-Find (DSU) ×11
02 · Arrays & Strings in Java
- #58Length of Last WordEasy
- #1929Concatenation of ArrayEasy
- #1431Kids With the Greatest Number of CandiesEasy
- #1470Shuffle the ArrayEasy
- #387First Unique Character in a StringEasymust-do
03 · OOP for DSA & Design Rounds
- #705Design HashSetEasy
- #707Design Linked ListMedium
- #1603Design Parking SystemEasy
06 · Mindset & Problem Solving
- #1480Running Sum of 1d ArrayEasy
- #412Fizz BuzzEasy
07 · Big-O & Complexity
- #69Sqrt(x)Easy
08 · Recursion
- #509Fibonacci NumberEasymust-do
- #344Reverse StringEasy
- #24Swap Nodes in PairsMedium
- #50Pow(x, n)Mediummust-do
- #779K-th Symbol in GrammarMedium
09 · Math & Number Theory
- #66Plus OneEasy
- #9Palindrome NumberEasy
- #202Happy NumberEasy
- #7Reverse IntegerMediummust-do
- #172Factorial Trailing ZeroesMedium
- #204Count PrimesMedium
- #43Multiply StringsMediummust-do
- #528Random Pick with WeightMediummust-do
- #149Max Points on a LineHard
10 · Arrays & Strings
- #121Best Time to Buy and Sell StockEasymust-do
- #122Best Time to Buy and Sell Stock IIMedium
- #53Maximum SubarrayMediummust-do
- #918Maximum Sum Circular SubarrayMedium
- #169Majority ElementEasymust-do
- #238Product of Array Except SelfMediummust-do
- #242Valid AnagramEasymust-do
- #49Group AnagramsMediummust-do
- #14Longest Common PrefixEasy
- #189Rotate ArrayMedium
- #41First Missing PositiveHardmust-do
11 · Matrices & Simulation
- #48Rotate ImageMediummust-do
- #54Spiral MatrixMediummust-do
- #6Zigzag ConversionMedium
- #73Set Matrix ZeroesMediummust-do
- #289Game of LifeMediummust-do
12 · Two Pointers
- #125Valid PalindromeEasymust-do
- #977Squares of a Sorted ArrayEasy
- #167Two Sum II - Input Array Is SortedMediummust-do
- #153SumMediummust-do
- #163Sum ClosestMedium
- #11Container With Most WaterMediummust-do
- #42Trapping Rain WaterHardmust-do
- #27Remove ElementEasy
- #26Remove Duplicates from Sorted ArrayEasy
- #80Remove Duplicates from Sorted Array IIMedium
- #88Merge Sorted ArrayEasymust-do
- #392Is SubsequenceEasy
- #75Sort ColorsMediummust-do
13 · Sliding Window
- #643Maximum Average Subarray IEasy
- #424Longest Repeating Character ReplacementMediummust-do
- #567Permutation in StringMediummust-do
- #438Find All Anagrams in a StringMediummust-do
- #76Minimum Window SubstringHardmust-do
- #209Minimum Size Subarray SumMediummust-do
- #1004Max Consecutive Ones IIIMediummust-do
- #219Contains Duplicate IIEasy
- #30Substring with Concatenation of All WordsHard
14 · Hashing & Prefix Sums
- #1Two SumEasymust-do
- #217Contains DuplicateEasymust-do
- #383Ransom NoteEasy
- #409Longest PalindromeEasy
- #205Isomorphic StringsEasy
- #290Word PatternEasy
- #128Longest Consecutive SequenceMediummust-do
- #36Valid SudokuMedium
- #303Range Sum Query - ImmutableEasymust-do
- #304Range Sum Query 2D - ImmutableMedium
- #560Subarray Sum Equals KMediummust-do
- #525Contiguous ArrayMedium
- #974Subarray Sums Divisible by KMedium
15 · Linked Lists
- #21Merge Two Sorted ListsEasymust-do
- #876Middle of the Linked ListEasy
- #141Linked List CycleEasymust-do
- #234Palindrome Linked ListEasymust-do
- #19Remove Nth Node From End of ListMediummust-do
- #142Linked List Cycle IIMediummust-do
- #287Find the Duplicate NumberMediummust-do
- #92Reverse Linked List IIMedium
- #328Odd Even Linked ListMedium
- #86Partition ListMedium
- #82Remove Duplicates from Sorted List IIMedium
- #61Rotate ListMedium
- #143Reorder ListMediummust-do
- #2Add Two NumbersMediummust-do
- #138Copy List with Random PointerMedium
- #25Reverse Nodes in k-GroupHardmust-do
16 · Stacks & Monotonic Stack
- #20Valid ParenthesesEasymust-do
- #155Min StackMediummust-do
- #150Evaluate Reverse Polish NotationMediummust-do
- #739Daily TemperaturesMediummust-do
- #496Next Greater Element IEasy
- #84Largest Rectangle in HistogramHardmust-do
- #853Car FleetMedium
- #394Decode StringMediummust-do
- #71Simplify PathMedium
- #32Longest Valid ParenthesesHard
- #735Asteroid CollisionMediummust-do
- #844Backspace String CompareEasy
17 · Queues & Deques
- #232Implement Queue using StacksEasymust-do
- #225Implement Stack using QueuesEasy
- #622Design Circular QueueMediummust-do
- #933Number of Recent CallsEasy
- #362Design Hit CounterMedium
- #239Sliding Window MaximumHardmust-do
- #2073Time Needed to Buy TicketsEasy
- #641Design Circular DequeMedium
- #862Shortest Subarray with Sum at Least KHard
18 · Binary Search
- #704Binary SearchEasymust-do
- #35Search Insert PositionEasymust-do
- #34Find First and Last Position of Element in Sorted ArrayMediummust-do
- #74Search a 2D MatrixMedium
- #33Search in Rotated Sorted ArrayMediummust-do
- #153Find Minimum in Rotated Sorted ArrayMediummust-do
- #875Koko Eating BananasMediummust-do
- #1011Capacity To Ship Packages Within D DaysMedium
- #162Find Peak ElementMediummust-do
- #4Median of Two Sorted ArraysHard
- #278First Bad VersionEasymust-do
- #658Find K Closest ElementsMedium
19 · Sorting
- #912Sort an ArrayMediummust-do
- #179Largest NumberMediummust-do
- #148Sort ListMediummust-do
- #274H-IndexMedium
- #493Reverse PairsHard
- #324Wiggle Sort IIMedium
- #1636Sort Array by Increasing FrequencyEasy
20 · String Parsing & Expression Evaluation
- #13Roman to IntegerEasymust-do
- #12Integer to RomanMedium
- #151Reverse Words in a StringMediummust-do
- #8String to Integer (atoi)Mediummust-do
- #227Basic Calculator IIMediummust-do
- #224Basic CalculatorHardmust-do
- #271Encode and Decode StringsMediummust-do
21 · Tree Traversals
- #94Binary Tree Inorder TraversalEasymust-do
- #102Binary Tree Level Order TraversalMediummust-do
- #637Average of Levels in Binary TreeEasy
- #199Binary Tree Right Side ViewMediummust-do
- #103Binary Tree Zigzag Level Order TraversalMedium
- #117Populating Next Right Pointers in Each Node IIMedium
- #662Maximum Width of Binary TreeMedium
- #863All Nodes Distance K in Binary TreeMediummust-do
- #297Serialize and Deserialize Binary TreeHardmust-do
22 · Tree Recursion
- #104Maximum Depth of Binary TreeEasymust-do
- #110Balanced Binary TreeEasy
- #100Same TreeEasy
- #226Invert Binary TreeEasymust-do
- #101Symmetric TreeEasymust-do
- #572Subtree of Another TreeEasymust-do
- #112Path SumEasy
- #113Path Sum IIMediummust-do
- #129Sum Root to Leaf NumbersMedium
- #1448Count Good Nodes in Binary TreeMediummust-do
- #222Count Complete Tree NodesMedium
- #437Path Sum IIIMediummust-do
- #543Diameter of Binary TreeEasymust-do
- #124Binary Tree Maximum Path SumHardmust-do
- #236Lowest Common Ancestor of a Binary TreeMediummust-do
- #105Construct Binary Tree from Preorder and Inorder TraversalMedium
- #106Construct Binary Tree from Inorder and Postorder TraversalMedium
- #114Flatten Binary Tree to Linked ListMedium
23 · Binary Search Trees
- #700Search in a Binary Search TreeEasy
- #701Insert into a Binary Search TreeMedium
- #450Delete Node in a BSTMediummust-do
- #98Validate Binary Search TreeMediummust-do
- #230Kth Smallest Element in a BSTMediummust-do
- #235Lowest Common Ancestor of a Binary Search TreeMediummust-do
- #285Inorder Successor in BSTMediummust-do
- #530Minimum Absolute Difference in BSTEasy
- #108Convert Sorted Array to Binary Search TreeEasy
- #173Binary Search Tree IteratorMediummust-do
- #220Contains Duplicate IIIHard
- #729My Calendar IMedium
24 · Heaps & Priority Queues
- #703Kth Largest Element in a StreamEasymust-do
- #1046Last Stone WeightEasy
- #215Kth Largest Element in an ArrayMediummust-do
- #347Top K Frequent ElementsMediummust-do
- #973K Closest Points to OriginMediummust-do
- #621Task SchedulerMedium
- #23Merge k Sorted ListsHardmust-do
- #295Find Median from Data StreamHardmust-do
- #355Design TwitterMedium
- #767Reorganize StringMedium
- #373Find K Pairs with Smallest SumsMedium
- #502IPOHard
- #632Smallest Range Covering Elements from K ListsHard
- #692Top K Frequent WordsMedium
25 · Tries
- #208Implement Trie (Prefix Tree)Mediummust-do
- #211Design Add and Search Words Data StructureMediummust-do
- #212Word Search IIHardmust-do
- #1268Search Suggestions SystemMediummust-do
- #720Longest Word in DictionaryMedium
- #336Palindrome PairsHard
26 · Graphs: BFS & DFS
- #200Number of IslandsMediummust-do
- #733Flood FillEasy
- #695Max Area of IslandMediummust-do
- #133Clone GraphMediummust-do
- #994Rotting OrangesMediummust-do
- #54201 MatrixMediummust-do
- #286Walls and GatesMedium
- #417Pacific Atlantic Water FlowMedium
- #1091Shortest Path in Binary MatrixMediummust-do
- #909Snakes and LaddersMedium
- #1197Minimum Knight MovesMedium
- #433Minimum Genetic MutationMedium
- #127Word LadderHardmust-do
27 · Shortest Paths
- #743Network Delay TimeMediummust-do
- #787Cheapest Flights Within K StopsMediummust-do
- #778Swim in Rising WaterHard
- #1334Find the City With the Smallest Number of Neighbors at a Threshold DistanceMediummust-do
28 · Union-Find & Minimum Spanning Trees
- #547Number of ProvincesMediummust-do
- #323Number of Connected Components in an Undirected GraphMedium
- #684Redundant ConnectionMediummust-do
- #261Graph Valid TreeMediummust-do
- #721Accounts MergeMediummust-do
- #1584Min Cost to Connect All PointsMediummust-do
- #990Satisfiability of Equality EquationsMedium
- #1319Number of Operations to Make Network ConnectedMedium
29 · Topological Sort
- #207Course ScheduleMediummust-do
- #210Course Schedule IIMediummust-do
- #953Verifying an Alien DictionaryEasy
- #269Alien DictionaryHardmust-do
- #802Find Eventual Safe StatesMedium
- #2050Parallel Courses IIIHard
- #310Minimum Height TreesMediummust-do
- #329Longest Increasing Path in a MatrixHardmust-do
30 · Advanced Graphs: Euler Paths, Bridges & SCCs
- #332Reconstruct ItineraryHardmust-do
- #1192Critical Connections in a NetworkHardmust-do
- #399Evaluate DivisionMediummust-do
- #815Bus RoutesHard
31 · Backtracking
- #78SubsetsMediummust-do
- #77CombinationsMediummust-do
- #90Subsets IIMediummust-do
- #46PermutationsMediummust-do
- #39Combination SumMediummust-do
- #40Combination Sum IIMedium
- #17Letter Combinations of a Phone NumberMedium
- #22Generate ParenthesesMediummust-do
- #79Word SearchMediummust-do
- #131Palindrome PartitioningMedium
- #51N-QueensHardmust-do
- #52N-Queens IIHard
- #37Sudoku SolverHard
32 · Greedy Algorithms
- #55Jump GameMediummust-do
- #45Jump Game IIMediummust-do
- #134Gas StationMediummust-do
- #763Partition LabelsMedium
- #678Valid Parenthesis StringMediummust-do
- #846Hand of StraightsMedium
- #135CandyHard
33 · Intervals
- #252Meeting RoomsEasy
- #57Insert IntervalMediummust-do
- #435Non-overlapping IntervalsMediummust-do
- #452Minimum Number of Arrows to Burst BalloonsMedium
- #1094Car PoolingMedium
34 · Bit Manipulation
- #136Single NumberEasymust-do
- #191Number of 1 BitsEasymust-do
- #338Counting BitsEasymust-do
- #190Reverse BitsEasy
- #268Missing NumberEasymust-do
- #67Add BinaryEasymust-do
- #371Sum of Two IntegersMedium
- #137Single Number IIMedium
- #260Single Number IIIMedium
- #231Power of TwoEasy
- #201Bitwise AND of Numbers RangeMedium
35 · Dynamic Programming
- #70Climbing StairsEasymust-do
- #746Min Cost Climbing StairsEasy
- #198House RobberMediummust-do
- #213House Robber IIMediummust-do
- #91Decode WaysMediummust-do
- #152Maximum Product SubarrayMediummust-do
- #139Word BreakMediummust-do
- #322Coin ChangeMediummust-do
- #518Coin Change IIMedium
- #377Combination Sum IVMedium
- #416Partition Equal Subset SumMediummust-do
- #62Unique PathsMediummust-do
- #63Unique Paths IIMedium
- #64Minimum Path SumMedium
- #120TriangleMedium
- #300Longest Increasing SubsequenceMediummust-do
- #1143Longest Common SubsequenceMediummust-do
- #72Edit DistanceMediummust-do
- #5Longest Palindromic SubstringMediummust-do
- #312Burst BalloonsHard
36 · DP Patterns
- #309Best Time to Buy and Sell Stock with CooldownMediummust-do
- #714Best Time to Buy and Sell Stock with Transaction FeeMedium
- #123Best Time to Buy and Sell Stock IIIHard
- #188Best Time to Buy and Sell Stock IVHardmust-do
- #10Regular Expression MatchingHardmust-do
- #97Interleaving StringMediummust-do
- #115Distinct SubsequencesHard
- #647Palindromic SubstringsMediummust-do
- #494Target SumMediummust-do
- #1235Maximum Profit in Job SchedulingHardmust-do
- #486Predict the WinnerMedium
37 · Design Data Structures
- #380Insert Delete GetRandom O(1)Mediummust-do
- #981Time Based Key-Value StoreMediummust-do
- #2013Detect SquaresMedium
- #895Maximum Frequency StackHardmust-do
- #588Design In-Memory File SystemHard
38 · Segment Trees, Fenwick & String Matching
- #307Range Sum Query - MutableMediummust-do
- #315Count of Smaller Numbers After SelfHardmust-do
- #28Find the Index of the First Occurrence in a StringEasymust-do
- #459Repeated Substring PatternEasy
- #1392Longest Happy PrefixHardmust-do
- #214Shortest PalindromeHard
- #1044Longest Duplicate SubstringHard