I also had help from a friend who was a top ranked competitive programmer. We went over problems together. To anyone with a competitive programming background most FANG interview questions are absurdly easy.
You often see people asking “So I’m supposed to come up with these 3 tricks to solve these problems in 5 minutes and write the code in 20 minutes under pressure ?”. Competitive programmers have trained themselves to do exactly this and they do this consistently on questions way more difficult than the average FANG interview. The value of this skill in day to day development is debatable but it’s definitely something to sharpen your mind. It’s something one can learn to do with reasonable effort and is not impossibly hard as some like to claim.
I also winnowed down on what to prepare by eliminating types of questions not generally asked or too difficult by scanning lists of common questions asked. Although I had only a few weeks to prepare. If you have more time the second step may not be as necessary.
If you have one month to prepare use the Elements of Programming Interviews book. If you have more time check out Udi Manbers book on designing algorithms using induction. It goes into the why and the how.
In recent times I’ve observed that the system design interview increasingly plays the deciding role as most candidates can now solve the DS/Algo questions being asked.