5 Websites to get Better at Data Structures & Algorithms (DSA)
A Programmers’ guide to become better at Data Structures & Algorithms
A secret to being a good Programmer is the fact that you should be good at Data Structures, Algorithms and Problem Solving using code.
Most times your job will require you to use data structures to solve problems and write complex logic to get things done.
Being able to quickly think of a solution and write an algorithm can be really helpful when designing or building applications in the real-world.
In this blog, I have summarized just a few sites which can help you get better by learning Data Structures and Algorithms from scratch.
1. HackerRank
HackerRank is a great website to get you started with coding problems. If you’re a Beginner and have good hold on a programming language you can start by solving questions on HackerRank.
Questions are categorized as Easy, Medium and Hard, making it easy for you to sort and solve questions by Difficulty. You can also choose topics which you want to solve questions from whether it be, Arrays, Strings, Dynamic Programming, Graphs, Bit Manipulation, Greedy, etc.
Apart from that there are language-specific tracks as well that you can practice from. HackerRank is a good site for Beginners who want to try their hands at DSA after learning a language.
2. GeeksforGeeks
GeeksForGeeks or GFG is the first site to pop-up in your google-search to learn anything related to Tech. It is an excellent resource with great tutorials and explanation for any topic or algorithm.
GFG has a dedicated practicing platform where people can go and practice problems by sorting them by Company Name and difficulty. With each problem you have dedicated tutorials in-case you are unable to solve the problem or need help.
Also you have a section for interview experiences on GFG that you may find extremely helpful if you are preparing for interviews for any of the tech companies around the globe. All-in-all it is a great site to start practicing and get better at coding, system-design and almost anything in tech.
3. Leetcode
Leetcode is the holy-grail for coding interviews. If you stick with Leetcode for coding interviews it is bound to pay great dividends.
For Beginners, Leetcode can be a bit harder as compared to previous two websites. So my advice is start with solving problems on HackerRank and once you think you are up for the challenge, start with Leetcode Easy. Slowly progress from Easy to Medium and then to Medium to Hard.
Don’t jump directly to Hard problems, you will definitely have a hard time understanding and would give up eventually. Leetcode too has a good discussion forum for solutions and interview experiences section.
Along with it they have Biweekly (on Saturday) and Weekly (on Sunday) coding challenges wherein you can participate and compete with people around the globe.
4. CodeChef
CodeChef is a great platform to get better at both DSA and Competitive programming. They have excellent tutorials and forums to learn & get good at programming.
Along with it they have a practice section where you can solve questions based on number of submissions and difficulty. Each user has a star rating, which they can increase by participating and doing well in their contests (coding challenges).
My personal use of CodeChef has been very limited but I would strongly recommend it to anyone starting out with programming. A good grip with Competitive programming can go a long way.
5. Codeforces
Codeforces, just like CodeChef is mostly used for Competitive programming. Codeforces has an active community of programmers with great discussion forums.
It has a ProblemSet section where you can solve problems that have been asked in previous contests and sort them according to difficulty and number of submissions.
Once you are confident, you can start giving contests on Codeforces. Contests are divided into different divisions: Div1, Div2, Div3 and Div4, Div1 being the hardest and Div4 being the easiest one.
So basically each user has a rating assigned to them and based on their rating a person can participate in specific contests. Once you start performing well and your ratings improve, you are allowed to give contests in lower divisions.
I have used Codeforces very sparingly. But online, you can find guidance on how to go about using Codeforces and how to get started with giving contests.
Bonus: Codewars
Unlike above sites, Codewars is a bit different. In Codewars everything is gamified and a lot more fun. CodeWars contains coding challenges called Kata and each time you solve a Kata, you earn ranks and honor.
The developer community at Codewars is a bit small compared to others but it is helpful nonetheless. CodeWars was the first programming platform that I started my coding journey with.
So, I learned JavaScript and Python from Codecademy and started doing Codewars. If you’re a beginner, CodeWars is a good platform to start. Also if you using some unconventional language (like Go, JS), you can find problems specifically designed for these languages as well.
So that’s it folks, I hope this list helps you in developing the problem-solving skills needed to become great at programming. Now go on and start grinding!