3 ms·
i keep CLRS as a reference book and i regularly read a chapter on something i find interesting, it's been a great book in my collection. For lectures, i recomme
by strikelaserclaw 5y ago
i keep CLRS as a reference book and i regularly read a chapter on something i find interesting, it's been a great book in my collection. For lectures, i recommend the algorithms course by Robert Sedgewick on Coursera, his way of presenting the material is extremely clear. Here are some key things i think you should know : 1)analyzing time + space complexity - omega (lower bound), theta, and big o notation 2) quick sort, merge sort (study quick sort more extensively because the partitioning idea is used in other algorithms), radix sort (what does it mean when a sort is stable? why is this idea important) - radix sort is used in some string sorting algorithms 2)binary search 3)Binary Search Trees, maybe a little bit about B-Trees (this is more for personal knowledge than interviews) 4)dictionary implementation 5)Graph representation (adj-list-matrix) and graph processing algorithms (mainly DFS and BFS and what properties do they have? can you detect a cycle in a graph?) You could also study minimum spanning tree algorithms and shortest path algorithms 6)Backtracking 7)Dynamic programming 8)Greedy algorithms
finally get a leetcode account. In many leetcode problems you don't need to know alot of these things i mentioned but studying those topics will allow you to learn different ways of thinking about problems solving.