1. Max Sub Array Sum, increase current or start new → Kadane
  2. Range Queries, Max or count of Target SubArray Sum, 2D Sum → Prefix Sum, count subarray with exactly k something = atMost(k) - atMost(k - 1)
  3. Partition array, choose where element should be where → Dutch National Flag + Cycle
  4. Pair or length in sorted array, trapping rain water, water container in → Two Pointers
  5. Subarray which can grow or shrink based on valid condition → Sliding Window
  6. you want increasing or decreasing sequence → monotonic stack
  7. search in a sorted array, find max, min over a space answer (guessing game, no answer expect guessing) → Binary search
  8. Max k, start or last k, greedy, sort some elements → heap