I've been poking around with leetcode very occasionally for a couple years. I've got a lot of projects under my belt but I don't see trees/graphs/etc. very often.
I usually end up being very close to having the right solution to a leetcode problem but I overlook something, e.g.,
I've read probably 3/4 of The Art of Computer Programming, I just bought Concrete Mathematics, I read "On Mathematical Induction" (the paper from 1960 by Henkin, it was a neat read). I know this is maybe not 100% applicable but I like math.
I feel like this is sort of where a Mathematical Induction mindset (base case, then n to n + 1) would help, and I can very easily do mathematical induction for e.g., summations (and I can even prove correctness), but I kind of have trouble visualizing it for programs. I know a for loop is basically a recursion.
I read a few chapters from about 5 algorithms books, and worked their problems, I kinda notice they tend to copy/paste each other at this point.
Also I don't know if it's just me or not but I don't notice any significant change in difficulty between Easy, Medium and Hard. Weird, huh?
The obvious answer is "just keep working programs and you'll find a pattern" (and I plan on doing that, as well as reading more books) but if anyone has any tips let me know.