As Seneca says:
There is no enjoying the possession of anything valuable unless one has someone to share it with. I shall send you, accordingly, the actual books themselves, and to save you a lot of trouble hunting all over the place for passages likely to be of use to you, I shall mark the passages so that you can turn straight away to the words I approve and admire.
So you want to learn Algorithms or improve your problem solving skill, right?
It is really a nice initiative to learn it, as it makes us better at approaching various problems. I have shared many problems in specific folders so that you can just learn what you want to learn. I just want to say there will be times when you'll see no progress even after spending whole day thinking about let's say a recusion or dynamic programming problem. But don't let this affect you, come back to that problem after some time or day then you'll apparently see your mistakes in your previous attempts.
Remember Time spent thinking about a problem is always time worth spent. Even if you seem to make no progress at all.
I always wanted to learn Data Structures and Algorithms but I was procrastinating since 2022.
After feeling too guilty on my mistaked, I told myself "Now no more procrastination. This time I'm going to learn all those algorithms that I always wanted to learn and solve problems that I always wanted to solve."
That's why I created this repo to track record of my process.
Well, so all files are well arranged and contain lots of comments.
Yeah, I admit there are still some files that contain no comments at all because I thought there is no need to do any comment as everything is clear from the code. I have given links of some articles/blogs which I found interesting. For example there is an awesome article for Merge Sort on Programiz so I thought "why I should explain, when there is already an excellant explanation available?"
So you won't be panicked after seeing lots of file and code in that because I have tried and still trying to make this repo fully understandable by anyone.
And I have tried my best not to add those boring and easy problems. You can see Few Challanging Problems.md to get an idea about level of problems in this repository.
If you're a begineer with no knoweledge of Data Structure and Algorithms then I would suggest you to read a book that I mentioned below, learn at least one programming language and try to solve some interesting problems.
Browse Essential Stuff to be familiar with some DSA and just ask yourself daily how can I do little more better than I did today? what are things I need to learn in order to understand this or that algorithm? I would like to give you an example from my own journey of making and learning all stuff of this repo. When I was having difficulty in understanding code of many Backtracking Problems I was trying very hard but I was not getting "how recursion working in this?" Then I read more about recursion and solve many problems by myself one on which I feel happy that I solved was Pascal Triangle. Free feel if you want to improve this and other files.
I'm grateful to an amazing book Algorithm by Jeff Erickson and CP-Algorithm no doubt both are excellent resources and there are lots of things to learn from these resources. I have also included solutions of some problems mentioned there.
Take care, and free feel to make some changes where you think is necessary.