【Leetcode】python - [695] Max Area of Island 個人解法筆記

整理 LeetCode #695 的個人解法筆記:解題思路、Time/Space Complexity 與邊界條件。

題目出處

695. Max Area of Island

難度

medium

題目分類

Array, DFS, Matrix

2026-07-24 一刷

個人範例程式碼 - 一刷 (2026/07/24)

class Solution:
    def maxAreaOfIsland(self, grid: List[List[int]]) -> int:
        if not grid or not grid[0]: # edge: [], [[]]
            return 0

        h, w = len(grid), len(grid[0])
        max_area = 0

        def dfs(grid, i, j):
            if i < 0 or i >= h or j < 0 or j >= w or grid[i][j] != 1:
               return 0

            else: # grid[i][j] == 1:
                grid[i][j] = 0
                return 1 + dfs(grid, i-1, j) + \
                       dfs(grid, i, j-1) + \
                       dfs(grid, i+1, j) + \
                       dfs(grid, i, j+1)

        for i in range(h):
            for j in range(w):
                if grid[i][j] == 1:
                    cur_area = dfs(grid, i, j)
                    max_area = max(max_area, cur_area)

        return max_area

算法說明

以 DFS 進行鄰近的搜尋,搜尋到後就修改值代表已經 visited

Time Complexity

O(m*n)

Space Complexity

O(m*n)(DFS 會進行遞迴的最壞情況,可能是一條龍那種,那 stack 深度就會是整張 grid 的面積)

Boundary conditions

  1. []:not grid 提前 return 0
  2. [[]]:not grid[0] 提前 return 0
  3. 處理邊界:i < 0 or i >= h or j < 0 or j >= w,優先排除不合法範圍在進行後續判斷

Reference

Licensed under CC BY-NC-SA 4.0
最後更新 Jul 24, 2026
使用 Hugo 建立
主題 StackJimmy 設計