最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)LeetCode(59.螺旋矩陣之二)

 更新時間:2021年07月16日 09:41:53   作者:Grandyang  
這篇文章主要介紹了C++實現(xiàn)LeetCode(59.螺旋矩陣之二),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下

[LeetCode] 59. Spiral Matrix II 螺旋矩陣之二

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

Example:

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

此題跟之前那道 Spiral Matrix 本質(zhì)上沒什么區(qū)別,就相當于個類似逆運算的過程,這道題是要按螺旋的順序來填數(shù),由于給定矩形是個正方形,我們計算環(huán)數(shù)時用 n / 2 來計算,若n為奇數(shù)時,此時最中間的那個點沒有被算在環(huán)數(shù)里,所以最后需要單獨賦值,還是下標轉(zhuǎn)換問題是難點,參考之前 Spiral Matrix 的講解來轉(zhuǎn)換下標吧,參見代碼如下:

解法一:

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> res(n, vector<int>(n));
        int val = 1, p = n;
        for (int i = 0; i < n / 2; ++i, p -= 2) {
            for (int col = i; col < i + p; ++col)
                res[i][col] = val++;
            for (int row = i + 1; row < i + p; ++row)
                res[row][i + p - 1] = val++;
            for (int col = i + p - 2; col >= i; --col)
                res[i + p - 1][col] = val++;
            for (int row = i + p - 2; row > i; --row)    
                res[row][i] = val++;
        }
        if (n % 2 != 0) res[n / 2][n / 2] = val;
        return res;
    }
};

當然我們也可以使用下面這種簡化了坐標轉(zhuǎn)換的方法,博主個人還是比較推崇下面這種解法,不容易出錯,而且好理解,參見代碼如下:

解法二:

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> res(n, vector<int>(n));
        int up = 0, down = n - 1, left = 0, right = n - 1, val = 1;
        while (true) {
            for (int j = left; j <= right; ++j) res[up][j] = val++;
            if (++up > down) break;
            for (int i = up; i <= down; ++i) res[i][right] = val++;
            if (--right < left) break;
            for (int j = right; j >= left; --j) res[down][j] = val++;
            if (--down < up) break;
            for (int i = down; i >= up; --i) res[i][left] = val++;
            if (++left > right) break;
        }
        return res;
    }
};

到此這篇關(guān)于C++實現(xiàn)LeetCode(59.螺旋矩陣之二)的文章就介紹到這了,更多相關(guān)C++實現(xiàn)螺旋矩陣之二內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++中引用&與取地址&的區(qū)別分析

    C++中引用&與取地址&的區(qū)別分析

    這篇文章主要介紹了C++中引用&與取地址&的區(qū)別,有助于C++初學(xué)者更好的掌握指針的概念及用法,需要的朋友可以參考下
    2014-09-09
  • C語言實現(xiàn)學(xué)籍管理系統(tǒng)課程設(shè)計

    C語言實現(xiàn)學(xué)籍管理系統(tǒng)課程設(shè)計

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)學(xué)籍管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • C語言實現(xiàn)車輛信息管理系統(tǒng)

    C語言實現(xiàn)車輛信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)車輛信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C++算術(shù)運算符與類型轉(zhuǎn)換

    C++算術(shù)運算符與類型轉(zhuǎn)換

    這篇文章主要介紹了C++算術(shù)運算符與類型轉(zhuǎn)換,C++當中提供5種基礎(chǔ)的算術(shù)運算符,分別是加法、減法、乘法、除法和取模。下main我們就一起來看看下面文章得具體舉例與說明,需要的朋友可以參考一下,希望對你有所幫助
    2021-11-11
  • C/C++實現(xiàn)馬踏棋盤算法

    C/C++實現(xiàn)馬踏棋盤算法

    這篇文章主要為大家詳細介紹了C/C++實現(xiàn)馬踏棋盤算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C語言進階教程之函數(shù)指針詳解

    C語言進階教程之函數(shù)指針詳解

    函數(shù)指針是一個指針變量,它可以存儲函數(shù)的地址,然后使用函數(shù)指針,下面這篇文章主要給大家介紹了關(guān)于C語言進階教程之函數(shù)指針的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • QT實現(xiàn)貪吃蛇游戲

    QT實現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細介紹了QT實現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 數(shù)據(jù)結(jié)構(gòu)順序表操作示例

    數(shù)據(jù)結(jié)構(gòu)順序表操作示例

    這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu)順序表操作示例,其中有在第I個元素前插入數(shù)據(jù)x,元素從0開始計數(shù)、刪除第i個元素,元素從0開始計數(shù)的方法,需要的朋友可以參考下
    2014-03-03
  • C語言的分支和循環(huán)語句你了解嗎

    C語言的分支和循環(huán)語句你了解嗎

    這篇文章主要為大家詳細介紹了C語言的分支和循環(huán)語句,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++實現(xiàn)LeetCode(203.移除鏈表元素)

    C++實現(xiàn)LeetCode(203.移除鏈表元素)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(203.移除鏈表元素),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評論

龙海市| 宜州市| 益阳市| 台北县| 旬邑县| 吴川市| 信丰县| 张家口市| 绥江县| 宜黄县| 灵台县| 青神县| 天台县| 工布江达县| 花垣县| 岱山县| 米脂县| 石城县| 凯里市| 清河县| 沙田区| 大同县| 永善县| 石柱| 宁德市| 应城市| 八宿县| 珲春市| 渝北区| 乌鲁木齐县| 塘沽区| 宝山区| 阜南县| 德庆县| 龙陵县| 德昌县| 万盛区| 灵川县| 古丈县| 梁山县| 鹤山市|