Wednesday, June 8, 2022

Leetcode discuss: A Full year with no days off- My thoughts

I came cross this post called "A Full year with no days off- My thoughts", and then I like to write my own one. 

Here is the link.  

  • The number of problems you have solved means absolutely nothing, and leetcode alone will not make you great at problem solving.
  • Making a post about something, doesn't always mean that you understand it.
  • You can't force learning topics that you don't like. The only thing you're achieving by forcing it is temporarily remembering it.
  • Half-assing a concept will most certainly eventually hurt your progress and waste your time.
  • You are not meant to understand every problem's solution. You need a certain level of algorithmic maturity for some problems. A lot of times this maturity comes from practice/ concepts that you have not studied yet. For example, no matter how much we discuss/practice a problem that requires the Convex Hull optimization, you still won't get it until you ve studied its theory, or the underlying concepts like dp/monoq.
  • High rated people are not always the best teachers.
  • Low rated people over long periods of time are most certainly not your best resource.
  • Posts like aatalyk's Dynamic Programming Patterns are trash. 2 weeks in you will have forgotten most of what you've learned, because you haven't really learned anything other than a few lines of code.
  • Setting time-schedules for a concept that you're studying is lamentable. Your brain doesnt respond to stimuli the way you expect it to.
  • Not having a schedule for the concepts you must study makes you a slave of occasion.
  • You can't really "finish" studying a challenging concept like dp, but you can attain some basic knowledge first, that will enable you to move on to other conecpts. BFS- style learning will be better in long term.
  • Ideas survive in your memory, implementations do not.
  • Just because you have implemented something, doesn't mean that you understand it.
  • You don't really understand things that you haven't implemented yet.
  • If you don't look at your old code and cringe, are you really improving?
  • Most likely, you don't even know what you don't know yet.
  • You shouldn't blidnly trust anything that you havent researched yourself from multiple sources.
  • Single contest ratings don't mean that much.
  • You're not really improving if your rating stays the same for long periods of time.
  • Copy-pasting solutions that you don't understand is for trash in denial who've hit rock bottom.
  • Avoiding contests to preserve rating is also for trash in denial.
  • Skipping a contest to study and remain on schedule won't hurt you.
  • Upsolving contest problems may hurt you and waste your time, when you lack knowledge of underlying basic concepts which you're better off studying first.
  • Your mental can break at some point. Spending more than 3 days to understand an approach can be stressful and disappointing.
  • If your mental is intact and your progress flatlines, consider doing harder problems/ studying more challenging topics.
  • Consistency on DSA can and will affect your personal life, especially if you're commited. The degree however depends on how much you let it affect it. You're not Gennady, and you know it. You haven't spent 10 years solving this kind of problems so it's only natural to struggle for many of them. This however should not discourage you from trying to be uncomfortable. Excuses are easy to find, especially when they' re de facto important, like work, family, money you name it. At these moments you have to remember that not everybody starts this race with the same tools, but it's the same race for everyone.

I like to review and write my own statements: 

  • The number of problems you have solved is a very good metric; and it takes time to build skills, but a lot of DSA practice will help you to prepare for future challenges.
  • It takes time to learn how to write a very good discussion post. I was too shy before to write my own discussion post. I am no longer a shy person, I love to write and I write to share, and I love to learn from my own experience as well. 
  • It is a difficult job to learn a hard level algorithm. I try so many hours to learn one hard algorithm sometimes. Learning is fun and I do believe that hard level algorithm may not be the best choice, since I can learn easy level or medium level first, and it may help me a lot to solve hard level later on. 
  • There are so many ways to learn and improve problem solving skills. Do not get frustrated. 
  • Build a good habit. Try to document the practice and find your own weakness. 
  • Look up high rated people and see what I can learn from their success.
  • Posts like aatalyk's Dynamic Programming Patterns definitely should be good resource. I will try to read again. 
  • How to learn better on algorithms by topics? I will think about it more later on. 
  • Learn to make plans.
  • DP, BFS are very good topics to work on. Work on BFS first, afterwards, work on DP. 
  • Ideas, implementation, small example, case study are the four most important components in problem solving. I try to work on simple things. Make it simple as possible. A small example with steps to solve will help me to learn much more quickly and make things clearer.
  • It takes time to improve problem solving skills, and I often review your own discussion post, and try to write a new one.
  • It is hard to manage contest rating. I prefer to learn better by studying algorithms, and work on classical algorithms first. 
  • I did spend around six months to work on weekly contest, and then I had difficult time to improve my rating. I chose to move on, and work on other ideas first. 

No comments:

Post a Comment