I didn't go to university thus I do not have a CS degree. This book was incredibly helpful in teaching me the basics of algorithms. I found it approachable but technical enough.
But I guess I'm just grumpy, because the book came with high praise.
To be more constructive:
Sedgewick's Algorithms is good for implementations in imperative languages. Okasaki's Purely Functional Data Structures is a nice introduction to some algorithms and data structures suitable in a purely functional setting. He also addresses laziness.
And finally for the theory, Schrijver's "Combinatorial Optimization: Polyhedra and Efficiency" tells you more about P and the boundary to NP than you ever wanted to know.
Those are just a few that I enjoyed, and I can't claim they are the best.
For example Structure and Interpretation of Computer Programs is definitely worth a read, but it won't help you with algorithms directly.
I found Knuth's Art of Computer Programming a bit too dense for me, and I have a high tolerance. There's definitely a wide world inbetween the fluffy Skiena and the concrete Knuth.
(I did enjoy Concrete Mathematics.)
Knuth is a bit too imperative for my interests.
But if you like strong stuff, Schrijver's "Combinatorial Optimization: Polyhedra and Efficiency" tells you more about P and the boundary to NP than you ever wanted to know.
If you haven't tried the latest entries in Knuth's work, I'd recommend those. The preprints of the Dancing Links stuff is surprisingly approachable and a ton of fun.
I wanted to do the same, but I feel a little threatened by the DS clause (That I had to had a course on the topic) - Did you have previous knowledge or just went through?