<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [每日算法 - 華為機試] leetcode463. 島嶼的周長

      入口

      力扣(LeetCode)官網 - 全球極客摯愛的技術成長平臺備戰技術面試?力扣提供海量技術面試資源,幫助你高效提升編程技能,輕松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/island-perimeter/solutions/466248/dao-yu-de-zhou-chang-by-leetcode-solution/

      題目描述

              給定一個 row x col 的二維網格地圖 grid ,其中:grid[i][j] = 1 表示陸地, grid[i][j] = 0 表示水域。

              網格中的格子 水平和垂直 方向相連(對角線方向不相連)。整個網格被水完全包圍,但其中恰好有一個島嶼(或者說,一個或多個表示陸地的格子相連組成的島嶼)。

              島嶼中沒有“湖”(“湖” 指水域在島嶼內部且不和島嶼周圍的水相連)。格子是邊長為 1 的正方形。網格為長方形,且寬度和高度均不超過 100 。計算這個島嶼的周長。
      示例 1:

       

      輸入:grid = [[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]]
      輸出:16
      解釋:它的周長是上面圖片中的 16 個黃色的邊

      示例 2:

      輸入:grid = [[1]]
      輸出:4
      

      示例 3:

      輸入:grid = [[1,0]]
      輸出:

      解法一:迭代 

      解題思路

              通過遍歷每個陸地格子,然后檢查它的上、右、下、左四個相鄰格子?????????????如果越界或者相鄰格子是水域,就認為當前格子的周長增加了1。??????

       

      java示例

      class Solution {
          // 定義上、右、下、左四個方向的坐標偏移量
          static int[] dx = {-1, 0, 1, 0};
          static int[] dy = {0, 1, 0, -1};
      
          public int islandPerimeter(int[][] grid) {
              int ans = 0;  // 用于累積島嶼的周長
              int n = grid.length;  // 網格的行數
              int m = grid[0].length;  // 網格的列數
              
              // 遍歷網格的每一個格子
              for (int i = 0; i < n; i++) {
                  for (int j = 0; j < m; j++) {
                      if (grid[i][j] == 1) {  // ??????如果當前格子是陸地??????
                          for (int k = 0; k < 4; k++) {  // 遍歷四個方向
                              int tx = i + dx[k];  // 計算新的行坐標
                              int ty = j + dy[k];  // 計算新的列坐標
      
                              // 如果新坐標越界或者新坐標處是水域(0),則周長加一
                              if (tx < 0 || tx >= n || ty < 0 || ty >= m || grid[tx][ty] == 0) {
                                  ans++;
                              }
                          }
                      }
                  }
              }
              return ans;  // 返回總周長
          }
      }
      

      代碼解釋

      假設你站在一個島嶼的一個格子上(假設這個格子是陸地)。

      • 你需要檢查當前格子的四個相鄰方向,即上、右、下、左。你會在這四個方向分別查看是否有相鄰的陸地格子或者是否超出了島嶼邊界。
      • 對于每個方向,你執行以下操作:
        • 計算出當前方向上相鄰格子的坐標。如果你站在坐標 (i, j) 上,這個相鄰格子的坐標為 (i + dx[k], j + dy[k]),其中 k 表示方向(0 表示上、1 表示右、2 表示下、3 表示左)。
        • 檢查這個相鄰格子是否在島嶼邊界之外或者是否是水域(0)。如果是,那么周長需要增加1。
      • 在每個方向上執行完上述操作后,你會得到一個在該方向上增加的周長值。
      • 最后,將這四個方向上增加的周長值累加起來,就是當前格子所在的島嶼的總周長。
      • 重復上述過程,將對每個格子的周長增加值都累加到 ans 變量中,最終得到整個島嶼的周長。

      這個代碼段的關鍵是使用 dx 和 dy 數組,通過循環遍歷四個方向,然后根據每個方向的情況來計算周長的增加值。這種方法使得在處理不同方向時變得更加抽象和可讀,而不必在代碼中編寫大量的條件語句來處理每個方向的情況。 

      周邊格子坐標表示方法

       

      復雜度分析

      時間復雜度:O(nm),其中 n 為網格的高度,m 為網格的寬度。

      空間復雜度:O(1)

       

      posted @ 2023-08-20 19:39  yihuiComeOn  閱讀(38)  評論(0)    收藏  舉報  來源
      主站蜘蛛池模板: 亚洲欧美人成人让影院| 日韩在线视频一区二区三区| 亚洲爆乳WWW无码专区| 久久精品国产热久久精品国产亚洲| 烟台市| 国产在线亚州精品内射| 国产综合色在线精品| 亚洲国产日韩a在线播放| 成在线人视频免费视频| 日韩大尺度一区二区三区| 中文字幕无码中文字幕有码a| 国产一区二区三区av在线无码观看 | 久久这里精品国产99丫E6| 激情综合色五月丁香六月亚洲| 非会员区试看120秒6次 | 日本在线 | 中文| 亚洲精品一区二区三区免| 欧美z0zo人禽交另类视频| 怡春院久久国语视频免费| 神马久久亚洲一区 二区| 久久精品国产久精国产| 亚洲成人av综合一区| 国产成人午夜在线视频极速观看| 麻豆一区二区中文字幕| 特黄 做受又硬又粗又大视频| 亚洲中文字幕一区精品自| 国产一区在线观看不卡| 四虎国产精品永久在线国在线| 久久婷婷大香萑太香蕉AV人| 岛国一区二区三区高清视频| 91老肥熟女九色老女人| 97一期涩涩97片久久久久久久 | 中文字幕99国产精品| 欧美色丁香| 久久88香港三级台湾三级播放| 色视频不卡一区二区三区| 强开小雪的嫩苞又嫩又紧| 日韩人妻无码精品久久| 国产精品久久久一区二区三区 | 精品日本免费一区二区三区| 蜜臀AⅤ永久无码精品|