I have ~10 years exp in embedded/system roles, and don't have much exposure to algorithms. I have a decent exposure to embedded/C programming though, and I can solve most questions on topics I am familiar with, say bit twiddling. But for the other topics, how do I go about it? For easy ones, I can somehow grind towards a naive solution, but for medium/hard ones, I reckon some kind of algorithm/pattern is a must, else the grinding process becomes a nightmare!
From the posts here, I see that the prolific Leetcoders have a certain intuition for identifying patterns and then go about solving the problems. How to get this intuition? Do I need to learn an OOP language like C++ first, then take an algo course? Or take algo course, then learn an OOP language and start implementing the algos? What is the recommended approach, considering I have a full-time job to manage during work days which doesn't involve heavy coding?