- Algorithm: method for solving a problem.
- Data structure: method to store information
- You need to always search for the fastest way in an algorithm. If you solved something in O(n) and it can be solved in O(log n) then you must do that.
Therefore, you need to know the time complexity of each of those data structures, if the data structure takes less time than another then it's probably better to use that.
- Remember, you have a big problem and all you need to is to solve the sub problems which will eventually solve the big problem.
- Arrays
- Graphs
- Hash Tables
- Heaps
- Linked Lists
- Queues
- Stacks
- Trees
- Binary Trees
- Red Black Trees
- AVL Trees
- Trie
- Tree Traversal
- Graphs part 2
- https://visualgo.net/en
- https://www.bigocheatsheet.com/
- https://www.youtube.com/watch?v=-9sHvAnLN_w&ab_channel=RobEdwards
- STAR Method
- Amortized constant time
- name server
- What happens when you hit url in your browser
- Regarding insertion at end in dynamic array
Amortized Constant time: Amortized analysis is used for algorithms that have expensive operations that happen only rarely. For example dynamic array (arraylist since it's backed by an array), whenever you reach the end of an array, then you need to double it's size and move all the elements to the new array. After that adding new elements will be O(1).