LeetCode solutions

130. Surrounded Regions

My accepted JavaScript solution to LeetCode problem 130, Surrounded Regions, running in 2ms.

  • Difficulty: Medium
  • JavaScript
  • Runtime 2ms
  • Memory 59.1MB

Read the problem on LeetCode View on GitHub

JavaScript

Accepted on LeetCode — runtime 2ms, memory 59.1MB, accepted 2025-12-24.

javascript
/**
 * @param {character[][]} board
 * @return {void} Do not return anything, modify board in-place instead.
 */
var solve = function(board) {
    if (!board.length) return;
    
    const m = board.length, n = board[0].length;
    
    const dfs = (i, j) => {
        if (i < 0 || i >= m || j < 0 || j >= n || board[i][j] !== 'O') return;
        board[i][j] = 'T';
        dfs(i + 1, j);
        dfs(i - 1, j);
        dfs(i, j + 1);
        dfs(i, j - 1);
    };
    
    for (let i = 0; i < m; i++) {
        dfs(i, 0);
        dfs(i, n - 1);
    }
    for (let j = 0; j < n; j++) {
        dfs(0, j);
        dfs(m - 1, j);
    }
    
    for (let i = 0; i < m; i++) {
        for (let j = 0; j < n; j++) {
            if (board[i][j] === 'O') board[i][j] = 'X';
            else if (board[i][j] === 'T') board[i][j] = 'O';
        }
    }
};

Source