<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實(shí)戰(zhàn)59:螺旋矩陣 II

          共 581字,需瀏覽 2分鐘

           ·

          2020-10-08 06:08

          算法的重要性,我就不多說(shuō)了吧,想去大廠,就必須要經(jīng)過(guò)基礎(chǔ)知識(shí)和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個(gè)公眾號(hào)后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問(wèn)題叫做?螺旋矩陣 II,我們先來(lái)看題面:

          https://leetcode-cn.com/problems/spiral-matrix-ii/

          Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

          題意

          給定一個(gè)正整數(shù)?n,生成一個(gè)包含 1 到?n2?所有元素,且元素按順時(shí)針順序螺旋排列的正方形矩陣。

          樣例

          輸入: 3
          輸出:
          [
          ?[ 1, 2, 3
          ],
          ?[?8, 9, 4 ],
          ?[?7, 6, 5 ]
          ]


          解題


          模擬法,設(shè)定邊界
          生成一個(gè) n×n 空矩陣 mat,隨后模擬整個(gè)向內(nèi)環(huán)繞的填入過(guò)程:
          定義當(dāng)前左右上下邊界 l,r,t,b,初始值 num = 1,迭代終止值 tar = n * n;
          當(dāng) num <= tar 時(shí),始終按照 從左到右 從上到下 從右到左 從下到上 填入順序循環(huán),每次填入后:
          執(zhí)行 num += 1:得到下一個(gè)需要填入的數(shù)字;
          更新邊界:例如從左到右填完后,上邊界 t += 1,相當(dāng)于上邊界向內(nèi)縮 1。
          使用num <= tar而不是l < r || t < b作為迭代條件,是為了解決當(dāng)n為奇數(shù)時(shí),矩陣中心數(shù)字無(wú)法在迭代過(guò)程中被填充的問(wèn)題。
          最終返回 mat 即可。


          class?Solution?{
          ????public?int[][] generateMatrix(int?n) {
          ????????int?l = 0, r = n - 1, t = 0, b = n - 1;
          ????????int[][] mat = new?int[n][n];
          ????????int?num = 1, tar = n * n;
          ????????while(num <= tar){
          ????????????for(int?i = l; i <= r; i++) mat[t][i] = num++; // left to right.
          ????????????t++;
          ????????????for(int?i = t; i <= b; i++) mat[i][r] = num++; // top to bottom.
          ????????????r--;
          ????????????for(int?i = r; i >= l; i--) mat[b][i] = num++; // right to left.
          ????????????b--;
          ????????????for(int?i = b; i >= t; i--) mat[i][l] = num++; // bottom to top.
          ????????????l++;
          ????????}
          ????????return?mat;
          ????}
          }


          好了,今天的文章就到這里,如果覺(jué)得有所收獲,請(qǐng)順手點(diǎn)個(gè)在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動(dòng)力。


          上期推文:


          LeetCode1-50題匯總,速度收藏!
          LeetCode刷題實(shí)戰(zhàn)51:N 皇后
          LeetCode刷題實(shí)戰(zhàn)52:N皇后 II
          LeetCode刷題實(shí)戰(zhàn)53:最大子序和
          LeetCode刷題實(shí)戰(zhàn)54:螺旋矩陣
          LeetCode刷題實(shí)戰(zhàn)55:跳躍游戲
          LeetCode刷題實(shí)戰(zhàn)56:合并區(qū)間
          LeetCode刷題實(shí)戰(zhàn)57:插入?yún)^(qū)間
          LeetCode刷題實(shí)戰(zhàn)58:最后一個(gè)單詞的長(zhǎng)度


          瀏覽 44
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品久久久久久久久久久久久 | 国产操逼电影 | 国产黄色A级毛片 | 秋霞丝鲁片一区二区三区手机在绒免 | 哪里有免费的国产在线黄色电影 |