I made a solver for the game Fill (on Google Play and Apple Store).

It runs in O(nα(n)) time and O(n) space for n cells, but while it fully solves most levels, it does not fully solve all of them. Some levels (#45, #56, #63, #98) cannot be solved purely by inspection, which is what this algorithm does for efficiency.