Understand the concept of Algorithmic complexity. Skip the theory for now, but for every piece of code you write, you should be able to derive both time and space complexity.
- Arrays
- Linked Lists
- Strings
- Stacks
- Queues
Understand their basic operations (insert, delete, search, traversal) and their complexity - Big-O Algorithm Complexity Cheat Sheet, and code them all.
- Sorting - Insertion sort, Merge sort, Quick sort, Heap sort, Bucket sort, Counting sort, Radix sort, External sorting
- Search - Linear search, Binary Search (along with its variants).
- Prime Numbers - Sieve of Eratosthenes, Primality test
- Strings - String searching, LCS, Palindrome detection
- Miscellaneous - Euclidean algorithm, Matrix multiplication, Fibonacci Numbers, Pascal's Triangle, Max Subarray problem
- Cracking the Coding Interview
- Elements of Programming Interviews
- Programming Interviews Exposed: Secrets to Landing Your Next Job
- GeeksforGeeks
- HackerRank
- InterviewBit
- Stick to chapters of arrays, linked lists, strings, stacks, queues and complexity.
- Tree
- Binary Tree, Binary Search Tree - Tree traversals, Lowest common ancestor, Depth, Height & Diameter, Finding k-th smallest element
- Heaps
- Hash table - 4 sum problem, Checking if sudoku solution is valid
- Graph - Breadth-first search, Depth-first search, Topological sorting, Minimum spanning tree, Shortest path problem,
- Refer to the previous resources and start doing problems from trees, hash tables, heaps and graphs.
- Understand Computational complexity theory and NP-completeness, Knapsack problem, Travelling salesman problem, SAT problem and so on.
You are now better than most of the CS undergrads. Keep revising the above topics and start competitive programming! Good luck!