1. Basics/Fundamentals -
Start with learning any language, try to use C, C++, or Java for a better understanding of concepts, As Python is an interpreted language and is slow as compared to C/C++ or Java. Unlike C or C++ it's not closer to hardware because Python is a high-level language.
2. Logic & Mathematical Aptitude
For approaching to solve problems and analyzing algorithms, one must have great sound logical skills and aptitude skills. It is always advised to explore some important math concepts: set theory, linear algebra, permutations, and combinations.
3. Time and Space complexity
Time and Space complexities are one of the most underrated and most useful skills one can master.
Time complexity is a function describing the amount of time an algorithm takes in terms of the amount of input to the algorithm
Space complexity is a function describing the amount of memory (space) an algorithm takes in terms of the amount of input to the algorithm.
4 Learn the logic, not the code!
Try to implement Binary search, Insertion Sort, Merge Sort by yourself. Don't just mug up the code.
- read the algorithm -> understand the logic -> and implement it by yourself (Better to write pseudocode before writing any code)
5 Practice as much as you can!
There are many platforms where you can practice and excel in your DSA. Solve problems on HackerRank & Coderbyte (beginners friendly), and revise it time to time.
Once you got a good understanding of all the beginner's stuff, move on to platforms like Leetcode, Codechef & Codeforces. They have timed contests where you have to solve specific problems in a certain amount of time, the same scenario you will be going to face in coding interviews.
Thank you for reading my first blog post, You can feel free to share your comments on this blog.
You can also follow me on Twitter where I post daily threads on programming, Open Source, and about getting better remote job opportunities.