標籤:toggle [] -o body info solution its lte ret
題目描述:
給一個01矩陣,求不同的島嶼的個數。
0代表海,1代表島,如果兩個1相鄰,那麼這兩個1屬於同一個島。我們只考慮上下左右為相鄰。
您在真實的面試中是否遇到過這個題? Yes
範例
在矩陣:
[ [1, 1, 0, 0, 0], [0, 1, 0, 0, 1], [0, 0, 0, 1, 1], [0, 0, 0, 0, 0], [0, 0, 0, 0, 1]]
中有 3 個島.
標籤 臉書 Google Zenefits
題目分析:
迴圈2維數組,找到其值為1的元素,count++,
然後遞迴改變其上下左右為1的元素值為0,
迴圈繼續。
源碼:
class Solution: # @param {boolean[][]} grid a boolean 2D matrix # @return {int} an integer def numIslands(self, grid): # Write your code here if grid is None: return None if grid == []: return 0 # 當數組不為空白時,計算行數和列數 self.n = len(grid) self.m = len(grid[0]) x = 0 for i in range(self.n): for j in range(self.m): if grid[i][j] == 1: x += 1 grid = self.change(grid,i,j) return x def change(self,grid,i,j): grid[i][j] = 0 if i > 0 and grid[i-1][j] == 1: # 置當前點上邊的點為0 grid = self.change(grid,i-1,j) if i < self.n-1 and grid[i+1][j] == 1: # 置當前點下邊的點為0 grid = self.change(grid,i+1,j) if j < self.m-1 and grid[i][j+1] == 1: # 置當前點右方的點為0 grid = self.change(grid,i,j+1) if j > 0 and grid[i][j-1] == 1: # 置當前點左方的點為0 grid = self.change(grid,i,j-1) return grid
LintCode Python 簡單級題目 433.島嶼的個數