Hacker News new | ask | show | jobs
by jcranmer 1132 days ago
A working programmer probably needs to have the general rudiments of algorithmic analysis to write good code--to understand why a O(1) algorithm is usually better than an O(N) algorithm, to understand what makes an algorithm O(1) or O(N), and to understand the basic properties of the canned library functions they use.

The basic list and map datatypes (array list, linked list, balanced search tree, hashtable) are good ways to get through these concepts, although hashtables and balanced search trees are in the oh-god-don't-ever-try-to-implement-these-yourself category. Graphs are also a pretty versatile data structure that has wide use, it certainly doesn't hurt to learn about all the algorithms already solved for graphs and how they might be adapted to your use cases. Tries, compression, and disjoint sets are I think a little too niche (although I do end up using disjoint sets a fair amount).