Let us first clarify the question. There is not any easy way to become good at anything but there is an efficient way to do everything.
Let us try to understand the difference between easy and efficient here with the help of a programming question! Consider the problem of “Searching an element in a sorted array“.
- Person A solves the above problem by using Linear Search algorithm.
- Person B solves the above problem by using Binary Search algorithm.
So, person A here solved the problem in an easy way yet Person B solved the problem in an efficient way.
Now, the efficient way of learning Data Structures and Algorithms depends on a several factors:
- Your prior knowledge of programming languages and basic DS and Algos.
- The purpose for which you want to learn it.
- The resources available to you.
- A perfect guide!
Let us now take a deeper look at each of the points highlighted above:
- Prior knowledge of DS and Algo: If you are already well versed with the basic data structures like Arrays, Linked Lists etc. and some of the basic algorithms like Sorting, Searching etc. then you will comparatively take much less time than a complete newbie as you already know the basics. For example if you even don’t understand the programming example mentioned at the start of the article then you have a long way to go.
- Purpose of learning DS and Algo: It also depends on the purpose for which you want to improve your knowledge of Data Structures. Some people learn them for job interviews, some for competitive programming and some for gaining knowledge. If you are preparing for Job Interviews then you have a limited set of Data Structures to learn which are most commonly asked in the interviews, if you want to become a good competetive programmer then you will have to focus on complex data structures like Segment Trees, Fenwik Tree, Binary Indexed Trees etc.
- Resources Available: Resources play a most important role in learning anything. You need a set of good tutorials which are descriptive enough to clear all of the concepts from basics to advanced. You must also have a popular set of questions to practice the knowledge you have gained.
- A Guide: Let’s just say you have figured out all of the above three points. You know the things you want to learn, you know the purpose for which you want to learn and you also have all of the resources and tutorials to do so. But you are still confused on a lot of things like “Where to Start?”, “How to Start?” etc. So, you need someone to guide you through the process. That is there must be someone to help you use the resources available in an efficient way.
Solution to the above problems: At GeeksforGeeks, we already have a vast collection of tutorials and problems based on Data Structures and Algorithms written by some good competitive programmers around the globe. We also have many past, running and upcoming courses on Data Structures and Algorithms which can be found on GeeksforGeeks-Courses.
If you are preparing for Interviews, we recommend you to go through the following links:
- Placement Preparation Guide
- A Step by Step Guide for Placement Preparation
- Top 10 algorithms in Interview Questions
- Top 10 algorithms in Interview Questions | Set 2
- How to prepare for top MNCs?
- Sudo Placement
If you are an aspiring Competitive Programmer, visiting below links is a must:
- How to begin with Competitive Programming?
- How to become a master in competitive programming?
- A Better Way To Approach Competitive Programming
- Tips and Tricks for Competitive Programmers
- Tips and Tricks for Competitive Programmers | Set 2
- Advanced Data Structures
- Top 10 Algorithms and Data Structures for Competitive Programming