Leetcode is actually quite good for this. You can find problems to do by topic and the process of doing the easy -> medium problems will get you pretty far in the way of the standard topics (greedy, dynamic programming, divide/conquery, graph search, fundamental data structures and so on).