【LeetCode59.螺旋矩陣II】——二維數(shù)組遍歷

59.螺旋矩陣II

題目鏈接

給你一個(gè)正整數(shù) n 印蔗,生成一個(gè)包含 1n^2^所有元素,且元素按順時(shí)針順序螺旋排列的 n x n 正方形矩陣 matrix 席楚。

示例 1:

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

示例 2:

輸入:n = 1
輸出:[[1]]

提示:

  • 1 <= n <= 20

思路:

本題總體而言沒(méi)有什么特定的算法胧瓜,算是對(duì)于二維數(shù)組的一次運(yùn)用垒探,關(guān)鍵點(diǎn)就是要不重不漏地進(jìn)行遍歷賦值眉撵。

代碼:

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> res(n, vector<int>(n, 0)); // 使用vector定義一個(gè)二維數(shù)組
        int startx = 0, starty = 0; // 定義每循環(huán)一個(gè)圈的起始位置
        int loop = n / 2; // 每個(gè)圈循環(huán)的次數(shù)
        int mid = n / 2; // 矩陣中間的位置,用于處理n為奇數(shù)時(shí)的情況
        int count = 1; // 用來(lái)給矩陣中每一個(gè)空格賦值把敞,從1開(kāi)始
        int offset = 1; //每次循環(huán)縮小邊界
        int i, j;//用于進(jìn)行循環(huán)
        while (loop--) { //進(jìn)行l(wèi)oop次循環(huán)
            i = startx;
            j = starty;

            // 填充上行從左到右(左閉右開(kāi))
            for (j = starty; j < n - offset; j++) {
                res[startx][j] = count++;
            }
            // 填充右列從上到下(左閉右開(kāi))
            for (i = startx; i < n - offset; i++) {
                res[i][j] = count++;
            }
            // 填充下行從右到左(左閉右開(kāi))
            for (; j > starty; j--) {
                res[i][j] = count++;
            }
            // 模擬填充左列從下到上(左閉右開(kāi))
            for (; i > startx; i--) {
                res[i][j] = count++;
            }

            // 第二圈開(kāi)始的時(shí)候弥奸,起始位置要各自加1
            startx++;
            starty++;

            // offset 控制每一圈里每一條邊遍歷的長(zhǎng)度
            offset += 1;
        }

        // 如果n為奇數(shù)的話(huà),需要單獨(dú)給矩陣最中間的位置賦值
        if (n % 2) {
            res[mid][mid] = count;
        }
        return res;
    }
};

為了做到不重不漏奋早,就要整體都按照一定的順序進(jìn)行賦值盛霎。這里就用到了統(tǒng)一使用左閉右開(kāi)區(qū)間的思想,每一輪賦值時(shí)統(tǒng)一給左邊界賦值耽装,右邊界不賦值愤炸。

參考教程:一入循環(huán)深似海 | LeetCode:59.螺旋矩陣II_嗶哩嗶哩_bilibili

往期回顧:
LeetCode977.有序數(shù)組的平方
LeetCode844.比較含退格的字符串
LeetCode283.移動(dòng)零
LeetCode27.移除元素
LeetCode26.刪除有序數(shù)組中的重復(fù)項(xiàng)
LeetCode209.長(zhǎng)度最小的子數(shù)組
LeetCode904. 水果成籃
LeetCode242.有效的字母異位詞
LeetCode76.最小覆蓋子串

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市掉奄,隨后出現(xiàn)的幾起案子规个,更是在濱河造成了極大的恐慌,老刑警劉巖姓建,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诞仓,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡引瀑,警方通過(guò)查閱死者的電腦和手機(jī)狂芋,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)榨馁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)憨栽,“玉大人,你說(shuō)我怎么就攤上這事翼虫⌒既幔” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵珍剑,是天一觀的道長(zhǎng)掸宛。 經(jīng)常有香客問(wèn)我,道長(zhǎng)招拙,這世上最難降的妖魔是什么唧瘾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任措译,我火速辦了婚禮,結(jié)果婚禮上饰序,老公的妹妹穿的比我還像新娘领虹。我一直安慰自己,他們只是感情好求豫,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布塌衰。 她就那樣靜靜地躺著,像睡著了一般蝠嘉。 火紅的嫁衣襯著肌膚如雪最疆。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,007評(píng)論 1 284
  • 那天蚤告,我揣著相機(jī)與錄音努酸,去河邊找鬼。 笑死杜恰,一個(gè)胖子當(dāng)著我的面吹牛蚊逢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播箫章,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼烙荷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了檬寂?” 一聲冷哼從身側(cè)響起终抽,我...
    開(kāi)封第一講書(shū)人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎桶至,沒(méi)想到半個(gè)月后昼伴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡镣屹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年圃郊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片女蜈。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡持舆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伪窖,到底是詐尸還是另有隱情逸寓,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布覆山,位于F島的核電站竹伸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏簇宽。R本人自食惡果不足惜勋篓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一吧享、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧譬嚣,春花似錦耙蔑、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至盐股,卻和暖如春钱豁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疯汁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工牲尺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人幌蚊。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓谤碳,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親溢豆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蜒简,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容