Given a linked list, remove the nth node from the end of list and return its head.
Easy to understand algorithm's time and space complexity with big o notation.
Introduce fixed size array
A dynamically resizing array is an array that resizes itself as needed
Introduce string and string buffer
A hash table is a data structure that maps keys to values for highly effient lookup.
A stack is a container of objects that are inserted and removed according to the last-in first-out (LIFO) principle.
A queue is a container of objects (a linear collection) that are inserted and removed according to the first-in first-out (FIFO) principle.
Representing a graph or tree by a matrix or adjacent node lists.
A tree is a data structure consisting of nodes organised as a hierarchy
A binary tree is a tree data structure in which each node has at most two children
Introduce the 3 types of Binary tree traversal - pre-order traversal, in-order traversal and post-order traversal.
Introduce the concept of BST and the related algorithms
A tree is height-balanced if the heights of the left and right subtree's of each node are within 1.
Introduce Complete Tree and Full Tree
The two main methods to traverse each node in a graph - Depth First Search and Breath First Search.
Introduce Bubble Sort
Introduce Selection Sort
Introduce Insertion Sort
Introduce Merge Sort
Introduce Quick Sort
Compares pros and cons of different sorting algorithms
Introduce Binary Search
Recursion solves a problem by solving one or more sub-states of the problem itself.
Introduce what is and when to use dynamic programming.
Introduce a classic dynamic programming problem: Longest Common Subsequence (LCS)
Introduce a classic dynamic programming problem: The Knapsack Problem
This post introduces basic operations and tricks about bit manipulation.
Given an array of integers, find if the array contains any duplicates.