If input array is sorted then - Binary search - Two pointers If asked for all permutations/subsets then - Backtracking If given a tree then - DFS - BFS If given a graph then - DFS - BFS If given a linked list then - Two pointers If recursion is banned then - Stack If must solve in-place then - Swap corresponding values - Store one or more different values in the same pointer If asked for maximum/minumum subarray/subset/options then - Dynamic programming If asked for top/least K items then - Heap If asked for common strings then - Map - Trie Else - Map/Set for O(1) time & O(n) space - Sort input for O(nlogn) time and O(1) space
competitive programming guides eg.algorithms,problems,tricks ,datastructure based on cp.