3619. Count Islands With Total Value Divisible by K

js
/**
* @param {number[][]} grid
* @param {number} k
* @return {number}
*/
var countIslands = function (grid, k) {
const m = grid.length
const n = grid[0].length
const dfs = (i, j) => {
let v = grid[i][j]
// 插棋
grid[i][j] = -1
// 找下一步
for (const [x, y] of [
[i + 1, j],
[i - 1, j],
[i, j + 1],
[i, j - 1],
])
if (x < m && x >= 0 && y < n && y >= 0) {
// x, y 在合法范围内
if (grid[x][y] > 0) {
// x, y 是陆地并且没有访问过
// 加价值
v += dfs(x, y)
}
}
return v
}
let ans = 0
for (let i = 0; i < m; i++) {
for (let j = 0; j < n; j++) {
if (grid[i][j] > 0) {
if (dfs(i, j) % k === 0) {
// ⚠️整除 %
ans += 1
}
}
}
}
return ans
}