Go•flood-fill/solution.go
package main
func floodFill(image [][]int, sr int, sc int, color int) [][]int {
original := image[sr][sc]
if original == color {
return image
}
var visit func(int, int)
visit = func(row int, column int) {
if row < 0 || row >= len(image) || column < 0 || column >= len(image[0]) || image[row][column] != original {
return
}
image[row][column] = color
visit(row-1, column)
visit(row+1, column)
visit(row, column-1)
visit(row, column+1)
}
visit(sr, sc)
return image
}
Python•flood-fill/solution.py
class Solution:
def floodFill(self, image: list[list[int]], sr: int, sc: int, color: int) -> list[list[int]]:
original = image[sr][sc]
if original == color: return image
def visit(row: int, column: int) -> None:
if row < class="syntax-number">0 or row == len(image) or column < class="syntax-number">0 or column == len(image[class="syntax-number">0]) or image[row][column] != original: return
image[row][column] = color
visit(row - class="syntax-number">1, column); visit(row + class="syntax-number">1, column); visit(row, column - class="syntax-number">1); visit(row, column + class="syntax-number">1)
visit(sr, sc)
return image
TypeScript•flood-fill/solution.ts
function floodFill(image: number[][], sr: number, sc: number, color: number): number[][] {
const original = image[sr][sc];
if (original === color) return image;
const visit = (row: number, column: number): void => {
if (row < class="syntax-number">0 || row >= image.length || column < class="syntax-number">0 || column >= image[class="syntax-number">0].length || image[row][column] !== original) return;
image[row][column] = color;
visit(row - class="syntax-number">1, column); visit(row + class="syntax-number">1, column); visit(row, column - class="syntax-number">1); visit(row, column + class="syntax-number">1);
};
visit(sr, sc);
return image;
}