# Category: Algorithms

## Guess what algorithm to use from input range when solving Leetcode problems or having coding interviews.

When coming into a tricky problem in coding interviews, you have no idea where to start with, and ugh, you mind just goes totally blank. The good news? It always happens to the best...

## [LeetCode] 773. Sliding Puzzle

Solution Bidirectional BFS Set two queues, src queue and dest queue. Init src queue with input board, and dest queue with final state [[1,2,3],[4,5,0]]. When both queues are not empty, expand the queue with...

## [LeetCode] 327. Count of Range Sum

Solution A similar question is Leetcode 493, counting reverse pairs. A data structure “Binary Indexed Tree”, BIT, would help. Steps: Calculate prefix sum. -> sum[] Work out all lower bounds and upper bounds for...

## [LeetCode] 215. Kth Largest Element in an Array

Solution Official solutions have several approaches including sorting, heap, and quick selecting. They are all great. I’d like to put forward another solution: Binary Search. First, we can come to that the answer must...

## [LeetCode]307. Range Sum Query – Mutable

Solution Use “Binary Indexed Tree (BIT)” (Fenwick Tree) data structure which supports querying prefix sum and adding a value to a single point. Binary Indexed Tree is a data structure not introduced on most...

## [LeetCode] 239. Sliding Window Maximum

Solution There are several approaches to solve this problem, like sliding window or DP. A more general description of this problem is how to quickly find a Maximum or Minimum between two indices in...

## [LeetCode] 968. Binary Tree Cameras

Solution This problem can be reduced to Minimum Dominating Set problem in Trees. Find minimum set of vertices such that every vertex is in or adjacent to set is NP-complete in general graphs, but...

## [LeetCode] 644. Maximum Average Subarray II

Solution Since the average must be> = the smallest element in the array, and <= the largest element in the array, we can perform binary search between the smallest and largest elements. Assuming that...

## [LeetCode] 1273. Delete Tree Nodes

Solution Do dfs on tree and check on backtracking if sum from children to current node equals to 0, if yes, trim it and its children by return count = 0 to its parent....