diff --git a/plan.txt b/plan.txt index a348544..855fad9 100644 --- a/plan.txt +++ b/plan.txt @@ -175,7 +175,7 @@ Then test it out on a computer to make sure it's not buggy from syntax. * - Space - contiguous in memory, so proximity helps performance - space needed = (array capacity, which is >= n) * size of item, but even if 2n, still O(n) -Singly Linked List +Linked Lists * - Description: * - https://www.coursera.org/learn/data-structures/lecture/kHhgK/singly-linked-lists * - Lynda.com: @@ -196,15 +196,16 @@ Singly Linked List * - pop_front() - remove front item * - push_back(value) - adds an item at the end * - pop_back() - removes end item - - insert(index, value) - insert value at index, so current item at that index is pointed to by next at index - - erase(index) - removes node at given index + * - value_at(index) - returns the value of the nth item + * - insert(index, value) - insert value at index, so current item at that index is pointed to by next at index + * - erase(index) - removes node at given index + - value_n_from_end(n) - returns the value of the node at nth position from the end of the list + - reverse() - reverses the list - remove(value) - remove all elements with this value - find(value) - return pointer to the node that has this value - - reverse() - reverses the list -Doubly-linked List + Doubly-linked List - Description: https://www.coursera.org/learn/data-structures/lecture/jpGKD/doubly-linked-lists - - implement: - - same as above for singly linked list + - No need to implement Stacks - see: https://class.coursera.org/algs4partI-010/lecture - https://www.coursera.org/learn/data-structures/lecture/UdKzQ/stacks @@ -302,12 +303,15 @@ Graphs: - familiarize yourself with each representation and its pros & cons - BFS and DFS - know their computational complexity, their tradeoffs, and how to implement them in real code - If you get a chance, try to study up on fancier algorithms: - - Dijkstra + - Dijkstra's algorithm + - https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm - A* + - https://en.wikipedia.org/wiki/A*_search_algorithm - when asked a question, look for a graph-based solution first, then move on if none. Other data structures: - You should study up on as many other data structures and algorithms as possible - - You should especially know about the most famous classes of NP-complete problems, such as traveling salesman and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise. + - You should especially know about the most famous classes of NP-complete problems, such as traveling salesman + and the knapsack problem, and be able to recognize them when an interviewer asks you them in disguise. - Know what NP-complete means. Recursion - when it is appropriate to use it