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 cannot fully solve all. Some levels (#63) can be solved only partially by inspection, which is what this algorithm does for efficiency.