I have heard Leetcode is a good way to prepare for FAANG interviews, but I don't have a strong algorithms background. Should I try and take free courses (MIT OCW or something similar) prior to working with Leetcode?
Many traditional textbook problems show up on LeetCode: for example, #23, #72, #141, #207, #322. They have textbook answers (of the kind that you're unlikely to reinvent starting from nothing). I could teach a somewhat disjointed introductory course on algorithms entirely from LeetCode problems. I could do that because I can tell which problems are typical, and which ones are distracting, exotic, time-consuming variations. For example, LeetCode #1 is a common textbook technique, #2 is a simple exercise in being careful, #3 is somewhat tricky, and I haven't seen #4 in the wild anywhere outside LeetCode. The solution that LeetCode authors propose for it is complicated and poorly explained.
People do compile curated sets of LeetCode problems. Without curation, you will waste a lot of effort on time-consuming, but less relevant problems. And it's also not clear how you would assess the quality of someone's curation. It's not like university professors release their own lists of LeetCode problems you should tackle. (One possible exception to this is the newest edition of Skiena's Algorithm Design Manual, which makes reference to relevant LeetCode problems here and there.)
The final problem with LeetCode is that the user-led discussion boards are occasionally helpful, but at most times are just awful rabbit holes of people competing on trivial runtime differences and code golfing their solutions. I think immersing yourself in LeetCode comments is a very reliable way to learn dysfunctional coding habits and pick up a distorted worldview of how to approach the coding part of an interview.
This was wayyyy better than the algorithm course I took.
It's easy to understand DSandA way harder to use them in practice.
Note: unless you're super gifted, expect this to take a LONG time.
I kind of treated like going to the gym where I try to do it everyday and make it kind of a lifestyle more than a one time thing.
If all you care about is learning about algorithms and data structures: do courses, get a degree and/or read reference books.
Very few people would say they have strong algorithms background even if they did research in graph algorithms.
Can you solve Leetcode easy?
Any good CS/Engineering program should have a good algorithm and data structure course.