overwhelmed with dsa
Posted by Ishaq0112@reddit | learnprogramming | View on Reddit | 10 comments
I’ve always wanted to start learning DSA and solving LeetCode problems, but every time I begin, I get overwhelmed by the huge number of resources available.
Whenever I try to study, I end up getting confused about Big O notation, space complexity, and time complexity. It feels like there’s too much to learn at once, and I struggle to stay focused.
How should I actually start learning DSA in a structured way?
How did you get comfortable with complexities and Big O notation in the beginning?
Any advice for avoiding resource overload and staying consistent would really help
BeginningOne8195@reddit
Honestly the biggest mistake beginners make with DSA is trying to learn everything at once instead of treating it like a long-term skill that builds gradually.
peterlinddk@reddit
Do you want to learn DSA or do you want to learn to solve LeetCode problems?
While there may be some overlap, those two things are very different.
And if you feel overwhelmed about Big O notation and the whole time/space complexity, why do you even want to learn it? It is literally almost entirely about that!
If you really want to learn DSA, and understand things in depth, read a good book - I recommend Grokking Algorithms, but there are many others. Or follow a course, any course. And then implement all the data structures and algorithms you want to understand, in the language you are most comfortable with. Remember to draw sketches and write pseudocode - work the problems on paper before writing a single line of code.
StarsCHISoxSuperBowl@reddit
Is Grokking Algorithms comprehensive?
peterlinddk@reddit
Nothing is "comprehensive" when it comes to DSA - not even Wikipedia. But it gives good explanations, and really focus on the idea of "getting it", of understanding the basics of time+space complexity, as well as the algorithms, and the pros and cons of the variations.
If you want comprehensive, I'd suggest CLSS or maybe even Knuth - but if you just want to understand, I highly recommend Grokking.
vegan_antitheist@reddit
Everything is a graph. You just need to learn what they are. Everything is about why we rarely actually use a general graph as a DS. If possible you use something with more restrictions, because then the algorithms can be optimised. The do less, so there's less to do. A tree is acyclic, so you don't have to deal with cycles. An array is just a sequence. So is a linked list.
Big O notation is also easy. The more complicated the expression in the bit O notation is, the more complex the algorithm is. Just remember that log makes it faster. O(1) = instant. O(log n) = fast. O(n) = not that fast. O(n²) slow. O(nⁿ) = horribly slow. For now this should be enough. Later you can learn what it means exactly and how you can figure out what complexity your own algorithms have.
SnooDoubts8688@reddit
As someone who started with LC directly, if I were to start again with DSA I'd work on fundamentals first.
Pick a DSA course from edX, for example. And stick with it. One you go through a fundamentals course like this, solving LC becomes appliance, not pure memorization.
BranchLatter4294@reddit
Find a decent book or tutorial. Follow along. Practice.
Born-Election8498@reddit
just pick one and stick with it fr
Snugglupagus@reddit
The traditional way is taking a discrete mathematics for CS course. These types of courses eases you into logic, proofs, and asymptotic analyses. Sometimes including relation/graph and number theory, or probability.
With this under your belt is when you start taking algorithm courses. All of these can be found for free on the internet.
Is this strictly necessary for solving leetcode problems? No. But understanding what’s really going on under the hood? Yeah.
Consider your end-goal.
TigerAnxious9161@reddit
Everyone is a beginner once, so try to practice easy ones until you are comfortable with them