01 · Question
You are given an m x n integer array grid where grid[i][j] could be:
1representing the starting square. There is exactly one starting square.2representing the ending square. There is exactly one ending square.0representing empty squares we can walk over.-1representing obstacles that we cannot walk over.
Return the number of 4-directional walks from the starting square to the ending square, that walk over every non-obstacle square exactly once.
02 · Analysis
Track the current cell and how many non-obstacle cells remain. Entering a cell marks it unavailable only for the current branch; restore it when returning. Reaching the destination contributes one only if all required cells were visited. For F traversable cells, a loose upper bound is O(4^F) search time, with O(F) recursion/visited space. Memoizing only the cell loses which cells are already used and is incorrect.