LintCode Python 簡單級題目 433.島嶼的個數

來源:互聯網
上載者:User

標籤: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.島嶼的個數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.