Data Structures and Algorithms
Abstract data types, algorithm analysis and design
Recursion, Generics and Collections
recursive helper methods, recursive binary search, recursion vs iteration, exponential recursion, memoization, backtracking (subsets, permutations, N-Queens), StackOverflowError
generic classes, interfaces and methods, diamond <>, bounded types <T extends Comparable<T>>, wildcards ? extends / ? super (PECS), raw types, type erasure
functional interfaces, lambdas, method references, Comparable vs Comparator, Comparator.comparing, streams, collectors, Optional
Collection hierarchy, ArrayList vs LinkedList, Iterator/ListIterator, fail-fast iterators, ArrayDeque as stack and queue, PriorityQueue, Arrays.asList, Collections utilities
HashSet, LinkedHashSet, TreeSet, equals/hashCode, Comparator, NavigableMap, HashMap, TreeMap, merge, computeIfAbsent
Analysis and Design of Algorithms
RAM model, Big-O / Big-Ω / Big-Θ, growth rates, loop analysis, best/worst/average case, space complexity, amortized analysis, loop invariants
recurrences, iteration and substitution, recursion trees, Master theorem, divide-and-conquer, recursive binary search, merge step, counting inversions, maximum subarray, fast exponentiation
greedy choice property, interval scheduling, fractional knapsack, Huffman coding, optimal substructure, memoization vs tabulation, coin change, 0/1 knapsack, LCS, LIS, solution reconstruction
Implementing Data Structures
List ADT, MyArrayList and ensureCapacity, amortized O(1) append, singly and doubly linked lists, Iterator inner classes, array and linked stacks, circular-array and linked queues
complete binary trees in an array, max-heap and min-heap, sift-up and sift-down, bottom-up buildHeap, heap sort, MyPriorityQueue<E> with a Comparator, top-k and k-way merge, java.util.PriorityQueue
tree vocabulary, the BST property, search and insert, delete (three cases), pre-/in-/post-/level-order traversal, height and O(h) costs, recursive tree utilities, isBST, a BST iterator
height and balance factor, the AVL invariant, LL/RR/LR/RL rotations, rebalancing after insertion and deletion, O(log n) height, red-black trees and TreeMap
Graphs
graph vocabulary, edge list, adjacency matrix, adjacency lists, BFS, DFS, connected components, cycle detection, bipartite graphs, topological sort, O(V + E)
weighted edges, relaxation, Dijkstra's algorithm, predecessor array, negative weights, Bellman–Ford, minimum spanning trees, cut property, Prim's algorithm, Kruskal's algorithm, union–find
32 problems with model solutions
The kind that appears in the coding section of a midterm, a final or a lab quiz. Write your solution, then compare.