LIS MOD array backtracking bfs binary search bit manipulation brainteaser bst bucket sort counting sort design dfs dijkstra dynamic programming enumeration flood fill gcd graph greedy hashmap heap inorder java javascript knapsack leetcode linked list math matrix memorization merge sort monotonic stack n-ary tree palindrome postorder prefix sum preorder queue recursion selection sort simulation sliding window sort stack string topological sort tree treemap trie two pointer two sum union find