每天一題LeetCode【第41天】

T59. Spiral Matrix II【Medium

題目

給一個(gè)整數(shù) n,構(gòu)造一個(gè) 1~n2 的螺旋排序的正方形矩陣。

例如:

當(dāng) n = 3 時(shí),

應(yīng)該返回如下矩陣:

[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

思路

這題和 leetcode 第 54 題解決方法幾乎一樣。

(在我的 每天一題LeetCode【第39天】 有對(duì)第 54 題的分析)

接下來說本題思路,首先還是拿出這張丑圖 (*  ̄? ̄*):

畫圈圈時(shí)有三個(gè)要點(diǎn):

① 畫完一行(列),下次再到這行(列)時(shí)會(huì)畫它的內(nèi)圈

② 當(dāng)畫到最后,兩線不能相交(就是下面的 boundriesCrossed 的作用)

③ 每畫一個(gè)點(diǎn)都是前面的點(diǎn)的數(shù)字 + 1

代碼

代碼取自 Top Solution,稍作注釋

 public int[][] generateMatrix(int n) {
        // 簡歷一個(gè) n × n 的矩陣
        int[][] matrix = new int[n][n];
        // 若為 0 則直接返回
        if (n == 0) {
            return matrix;
        } 
        // 設(shè)置初始值
        int rowStart = 0;
        int rowEnd = n-1;
        int colStart = 0;
        int colEnd = n-1;
        int num = 1; //change
        //看有沒有越界,有的話循環(huán)結(jié)束
        while (rowStart <= rowEnd && colStart <= colEnd) {
            // 畫上面的那行
            for (int i = colStart; i <= colEnd; i ++) {
                matrix[rowStart][i] = num ++; //change
            }
            //下一次內(nèi)行
            rowStart ++;
            // 畫最右邊的列
            for (int i = rowStart; i <= rowEnd; i ++) {
                matrix[i][colEnd] = num ++; //change
            }
            //下一次內(nèi)列
            colEnd --;
            // 畫最下邊的列
            for (int i = colEnd; i >= colStart; i --) {
                if (rowStart <= rowEnd)
                    matrix[rowEnd][i] = num ++; //change
            }
            //下一次內(nèi)行
            rowEnd --;
            // 畫最左邊的列
            for (int i = rowEnd; i >= rowStart; i --) {
                if (colStart <= colEnd)
                    matrix[i][colStart] = num ++; //change
            }
            //下一次內(nèi)列
            colStart ++;
        }
        
        return matrix;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • LeetCode 刷題隨手記 - 第一部分 前 256 題(非會(huì)員),僅算法題,的吐槽 https://leetc...
    蕾娜漢默閱讀 18,392評(píng)論 2 36
  • leetcode 是一個(gè)很有名的在線OJ,上面收集了各大IT公司的筆試面試題,非常適用于在國內(nèi)找工作的程序猿,以及...
    草稿紙反面閱讀 7,193評(píng)論 14 90
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,923評(píng)論 0 33
  • T54. Spiral Matrix【Medium】 題目 給一個(gè) m × n 的矩陣(m 行,n 列),按螺旋順...
    草稿紙反面閱讀 631評(píng)論 0 2
  • 任何事情都可能會(huì)遇到瓶頸期,在自己不擅長的事情上尤甚。寫作想必對(duì)于很多人來講,是一個(gè)枯燥乏味、令人頭痛的事情。雖然...
    linsa碎碎念閱讀 308評(píng)論 2 1

友情鏈接更多精彩內(nèi)容