company prep
Apple
Problems frequently reported at Apple, in course order. Solve the must-dos first.
21 easy34 medium5 hardTwo pointers (opposite ends) ×5Frequency counting ×4Binary search (exact & bounds) ×4Fast & slow pointers ×3Trie (prefix tree) ×3Matrix traversal & in-place transforms ×3
02 · Arrays & Strings in Java
- #387First Unique Character in a StringEasymust-do
06 · Mindset & Problem Solving
- #412Fizz BuzzEasy
07 · Big-O & Complexity
- #69Sqrt(x)Easy
08 · Recursion
- #509Fibonacci NumberEasymust-do
- #344Reverse StringEasy
09 · Math & Number Theory
- #202Happy NumberEasy
- #7Reverse IntegerMediummust-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
- #238Product of Array Except SelfMediummust-do
- #49Group AnagramsMediummust-do
- #14Longest Common PrefixEasy
- #189Rotate ArrayMedium
11 · Matrices & Simulation
- #48Rotate ImageMediummust-do
- #54Spiral MatrixMediummust-do
- #73Set Matrix ZeroesMediummust-do
12 · Two Pointers
- #125Valid PalindromeEasymust-do
- #167Two Sum II - Input Array Is SortedMediummust-do
- #283Move ZeroesEasy
14 · Hashing & Prefix Sums
- #383Ransom NoteEasy
- #36Valid SudokuMedium
15 · Linked Lists
- #206Reverse Linked ListEasymust-do
- #21Merge Two Sorted ListsEasymust-do
- #876Middle of the Linked ListEasy
- #19Remove Nth Node From End of ListMediummust-do
- #146LRU CacheMediummust-do
17 · Queues & Deques
- #232Implement Queue using StacksEasymust-do
- #622Design Circular QueueMediummust-do
- #362Design Hit CounterMedium
18 · Binary Search
- #704Binary SearchEasymust-do
- #34Find First and Last Position of Element in Sorted ArrayMediummust-do
- #74Search a 2D MatrixMedium
20 · String Parsing & Expression Evaluation
- #151Reverse Words in a StringMediummust-do
21 · Tree Traversals
- #102Binary Tree Level Order TraversalMediummust-do
22 · Tree Recursion
- #104Maximum Depth of Binary TreeEasymust-do
- #236Lowest Common Ancestor of a Binary TreeMediummust-do
23 · Binary Search Trees
- #108Convert Sorted Array to Binary Search TreeEasy
- #173Binary Search Tree IteratorMediummust-do
24 · Heaps & Priority Queues
- #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
25 · Tries
- #208Implement Trie (Prefix Tree)Mediummust-do
- #211Design Add and Search Words Data StructureMediummust-do
26 · Graphs: BFS & DFS
- #127Word LadderHardmust-do
29 · Topological Sort
- #207Course ScheduleMediummust-do
- #210Course Schedule IIMediummust-do
33 · Intervals
- #56Merge IntervalsMediummust-do
- #253Meeting Rooms IIMediummust-do
34 · Bit Manipulation
- #191Number of 1 BitsEasymust-do
- #190Reverse BitsEasy
35 · Dynamic Programming
- #221Maximal SquareMedium
37 · Design Data Structures
- #380Insert Delete GetRandom O(1)Mediummust-do
- #981Time Based Key-Value StoreMediummust-do
38 · Segment Trees, Fenwick & String Matching
- #28Find the Index of the First Occurrence in a StringEasymust-do
- #1392Longest Happy PrefixHardmust-do