1. 程式人生 > >463. Island Perimeter (5月29日)

463. Island Perimeter (5月29日)

amp lan clas num size sla 只需要 ++ PE

解答

class Solution {
public:
    int islandPerimeter(vector<vector<int>>& grid) {
        int num=0,edge=0;
        for(int i=0;i<grid.size();++i){
            for(int j=0;j<(*grid.begin()).size();++j){
                if(grid[i][j]==1){
                    ++num;
                    if
(i+1!=grid.size()&&grid[i+1][j]==1) ++edge; if(j+1!=(*grid.begin()).size()&&grid[i][j+1]==1) ++edge; } } } return 4*num-2*edge; } };

筆記

這個題是我參考了解答之後才正確做對的

想到的:

  1. 島的周長=4ב1’的個數-2×相鄰邊數
    其中‘1’的個數很容易求得,但問題關鍵在於邊數

求相鄰邊數:

因為相鄰邊的倆個節點是相互的,比如A結點在B結點左邊,有一條相鄰邊,那麽B結點就在A結點右邊。所以左右相鄰只需要確定一個方向就好了

因此我們只需判斷一個結點的右側和下側結點是不是與它相鄰就好了。如果相鄰,這說明也是‘1’

若當前結點在最右列或最下行時就不需要在找其右側和下側的結點,所以要加上判斷條件是否是最右列或最下行

463. Island Perimeter (5月29日)