iT邦幫忙

2025 iThome 鐵人賽

0
生成式 AI

Chatting with ChatGPT——一天學習一題Leetcode系列 第 26

雖然斷賽但還是要打完.......

  • 分享至 

  • xImage
  •  

這次的題目是:200. Number of Islands (Medium)
題目大意是: 給定一個 2D 網格,'1' 代表陸地,'0' 代表水。
計算島嶼的數量(島嶼由相鄰的陸地連接而成,只能上下左右連接)。

class Solution {
    public int numIslands(char[][] grid) {
        if (grid == null || grid.length == 0) {
            return 0;
        }
        
        int rows = grid.length;
        int cols = grid[0].length;
        int count = 0;
        
        // 遍歷整個網格
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                // 發現新島嶼
                if (grid[i][j] == '1') {
                    count++;
                    dfs(grid, i, j);  // 用 DFS 標記整個島嶼
                }
            }
        }
        
        return count;
    }
    
    // DFS 遞迴函數
    private void dfs(char[][] grid, int i, int j) {
        int rows = grid.length;
        int cols = grid[0].length;
        
        // 邊界檢查 + 是否為陸地
        if (i < 0 || i >= rows || j < 0 || j >= cols || grid[i][j] == '0') {
            return;
        }
        
        // 標記為已訪問(沉沒這塊陸地)
        grid[i][j] = '0';
        
        // 向四個方向擴散
        dfs(grid, i - 1, j);  // 上
        dfs(grid, i + 1, j);  // 下
        dfs(grid, i, j - 1);  // 左
        dfs(grid, i, j + 1);  // 右
    }
}

上一篇
3. Longest Substring Without Repeating Characters
下一篇
加油! 739. Daily Temperatures (Medium)
系列文
Chatting with ChatGPT——一天學習一題Leetcode30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言