国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Leetcode-每日一題【劍指 Offer 29. 順時(shí)針打印矩陣】

這篇具有很好參考價(jià)值的文章主要介紹了Leetcode-每日一題【劍指 Offer 29. 順時(shí)針打印矩陣】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

題目

輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(shù)字。

示例 1:

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

示例 2:

輸入:matrix =?[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
輸出:[1,2,3,4,8,12,11,10,9,5,6,7]

限制:

  • 0 <= matrix.length <= 100
  • 0 <= matrix[i].length?<= 100

解題思路

1.題目要求我們按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(shù)字,對(duì)于這種題我們首先要找到邊界,然后利用 for 循環(huán)去打印。

2.舉個(gè)例子:matrix = [[1,2,3],[4,5,6],[7,8,9]]

Leetcode-每日一題【劍指 Offer 29. 順時(shí)針打印矩陣】,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)據(jù)結(jié)構(gòu)

?首先我們?cè)O(shè)置四個(gè)變量(t, b, l, r)來保存矩陣的邊界

Leetcode-每日一題【劍指 Offer 29. 順時(shí)針打印矩陣】,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)據(jù)結(jié)構(gòu)

第一步從左往右打印,此時(shí)矩陣的縱坐標(biāo)不變,橫坐標(biāo)從 l 到 r(?for(int i = t, j = l; j <= r; j++))。建立一個(gè)新數(shù)組將遍歷到的元素保存進(jìn)去(res[k++] = matrix[i][j];),遍歷結(jié)束后第0行的元素已經(jīng)全部被訪問過了,所以我們要將?t 加 1。還要判斷 t 是否大于 b,若大于則表示打印完畢

Leetcode-每日一題【劍指 Offer 29. 順時(shí)針打印矩陣】,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)據(jù)結(jié)構(gòu)?第二步從上往下打印,此時(shí)矩陣的橫坐標(biāo)不變,縱坐標(biāo)從 t 到 b(for(int i = t, j = r; i <= b; i++)),遍歷結(jié)束后第 r 列的元素已經(jīng)全部被訪問過了,所以我們要將?r?減?1。判斷 l?是r,若大于則表示打印完畢

Leetcode-每日一題【劍指 Offer 29. 順時(shí)針打印矩陣】,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)據(jù)結(jié)構(gòu)

??第三步從右往左打印,此時(shí)矩陣的縱坐標(biāo)不變,橫坐標(biāo)從 r 到 l(for(int i = b, j = r; j >= l; j--)),遍歷結(jié)束后第 b 行的元素已經(jīng)全部被訪問過了,所以我們要將 b?減?1。還要判斷 t 是否大于 b,若大于則表示打印完畢

Leetcode-每日一題【劍指 Offer 29. 順時(shí)針打印矩陣】,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)據(jù)結(jié)構(gòu)

??第四步從下往上打印,此時(shí)矩陣的橫坐標(biāo)不變,縱坐標(biāo)從 b?到 t(for(int i = b, j = l; i >= t; i--)),遍歷結(jié)束后第 l?列的元素已經(jīng)全部被訪問過了,所以我們要將 l?加?1。判斷 l?是r,若大于則表示打印完畢。

Leetcode-每日一題【劍指 Offer 29. 順時(shí)針打印矩陣】,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)據(jù)結(jié)構(gòu)

此時(shí)我們開始第二次while循環(huán),

Leetcode-每日一題【劍指 Offer 29. 順時(shí)針打印矩陣】,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)據(jù)結(jié)構(gòu)?此時(shí) t 已經(jīng)大于 b 了,我們也就打印完了所有元素,最后返回保存打印元素的數(shù)組即可。?

代碼實(shí)現(xiàn)

class Solution {
    public int[] spiralOrder(int[][] matrix) {
        if(matrix == null || matrix.length == 0 || matrix[0].length == 0){
            return new int[0];
        }
        int l = 0, r = matrix[0].length - 1, t = 0, b = matrix.length - 1;
        int[] res = new int[(r+1) * (b+1)];
        int k = 0;
        while(true){
            //從左往右
            for(int i = t, j = l; j <= r; j++){
                res[k++] = matrix[i][j];
            }
            t++;
            if(t > b) break;
            //從上往下
             for(int i = t, j = r; i <= b; i++){
                res[k++] = matrix[i][j];
            }
            r--;
            if(r < l) break;
            //從右往左
             for(int i = b, j = r; j >= l; j--){
                res[k++] = matrix[i][j];
            }
            b--;
            if(t > b) break;
            //從下往上
             for(int i = b, j = l; i >= t; i--){
                res[k++] = matrix[i][j];
            }
            l++;
            if(r < l) break;

        }
    return res;

    }
}

測(cè)試結(jié)果

Leetcode-每日一題【劍指 Offer 29. 順時(shí)針打印矩陣】,leetcode,算法,職場(chǎng)和發(fā)展,java,數(shù)據(jù)結(jié)構(gòu)

?文章來源地址http://www.zghlxwxcb.cn/news/detail-646694.html

到了這里,關(guān)于Leetcode-每日一題【劍指 Offer 29. 順時(shí)針打印矩陣】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 劍指 Offer 29. 順時(shí)針打印矩陣

    劍指 Offer 29. 順時(shí)針打印矩陣

    輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(shù)字。 示例 1: 輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 輸出:[1,2,3,6,9,8,7,4,5] 示例 2: 輸入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 輸出:[1,2,3,4,8,12,11,10,9,5,6,7] 限制: 0 = matrix.length = 100 0 = matrix[i].length = 100 思路:首先自己

    2024年02月15日
    瀏覽(29)
  • 劍指offer(C++)-JZ29:順時(shí)針打印矩陣(算法-模擬)

    劍指offer(C++)-JZ29:順時(shí)針打印矩陣(算法-模擬)

    作者:翟天保Steven 版權(quán)聲明:著作權(quán)歸作者所有,商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處 題目描述: 輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(shù)字,例如,如果輸入如下4 X 4矩陣: 則依次打印出數(shù)字 數(shù)據(jù)范圍: 0 = matrix.length = 100 0 = ma

    2024年02月10日
    瀏覽(21)
  • Leetcode-每日一題【劍指 Offer 06. 從尾到頭打印鏈表】

    Leetcode-每日一題【劍指 Offer 06. 從尾到頭打印鏈表】

    輸入一個(gè)鏈表的頭節(jié)點(diǎn),從尾到頭反過來返回每個(gè)節(jié)點(diǎn)的值(用數(shù)組返回)。 示例 1: 輸入: head = [1,3,2] 輸出: [2,3,1] 限制: 0 = 鏈表長(zhǎng)度 = 10000 1.題目要求我們從尾到頭反過來返回每個(gè)節(jié)點(diǎn)的值,這道題我們可以用棧去解決,但是我們還可以采用另一種方法。就是我們可以

    2024年02月13日
    瀏覽(19)
  • Leetcode-每日一題【劍指 Offer 32 - I. 從上到下打印二叉樹】

    Leetcode-每日一題【劍指 Offer 32 - I. 從上到下打印二叉樹】

    從上到下打印出二叉樹的每個(gè)節(jié)點(diǎn),同一層的節(jié)點(diǎn)按照從左到右的順序打印。 例如: 給定二叉樹:? [3,9,20,null,null,15,7] , ??? 3 ?? / ? 9? 20 ??? /? ?? 15?? 7 返回: [3,9,20,15,7] 提示: 節(jié)點(diǎn)總數(shù) = 1000 1.題目要求我們從上到下打印出二叉樹的每個(gè)節(jié)點(diǎn),同一層的節(jié)點(diǎn)按照從左

    2024年02月12日
    瀏覽(22)
  • (樹) 劍指 Offer 32 - I. 從上到下打印二叉樹 ——【Leetcode每日一題】

    (樹) 劍指 Offer 32 - I. 從上到下打印二叉樹 ——【Leetcode每日一題】

    難度:中等 從上到下打印出二叉樹的每個(gè)節(jié)點(diǎn),同一層的節(jié)點(diǎn)按照從左到右的順序打印。 例如: 給定二叉樹: [3,9,20,null,null,15,7], 返回: 提示 : 節(jié)點(diǎn)總數(shù) = 100 ??思路:BFS 使用 優(yōu)先隊(duì)列 進(jìn)行 層序遍歷 即可! ??代碼:(C++、Java) C++ Java ?? 運(yùn)行結(jié)果: ?? 復(fù)雜度分析: 時(shí)間

    2024年02月14日
    瀏覽(22)
  • (搜索) 劍指 Offer 12. 矩陣中的路徑 ——【Leetcode每日一題】

    (搜索) 劍指 Offer 12. 矩陣中的路徑 ——【Leetcode每日一題】

    難度:中等 給定一個(gè) m * n 二維字符網(wǎng)格 board 和一個(gè)字符串單詞 word 。如果 word 存在于網(wǎng)格中,返回 true ;否則,返回 false 。 單詞必須按照字母順序,通過相鄰的單元格內(nèi)的字母構(gòu)成,其中“相鄰”單元格是那些水平相鄰或垂直相鄰的單元格。同一個(gè)單元格內(nèi)的字母不允許

    2024年02月12日
    瀏覽(27)
  • Leetcode-每日一題【劍指 Offer 32 - III. 從上到下打印二叉樹 III】

    Leetcode-每日一題【劍指 Offer 32 - III. 從上到下打印二叉樹 III】

    請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù)按照之字形順序打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右到左的順序打印,第三行再按照從左到右的順序打印,其他行以此類推。 例如: 給定二叉樹:? [3,9,20,null,null,15,7] , ??? 3 ?? / ? 9? 20 ??? /? ?? 15?? 7 返回其層次遍歷結(jié)果:

    2024年02月12日
    瀏覽(24)
  • Leetcode-每日一題【劍指 Offer 32 - II. 從上到下打印二叉樹 II】

    Leetcode-每日一題【劍指 Offer 32 - II. 從上到下打印二叉樹 II】

    從上到下按層打印二叉樹,同一層的節(jié)點(diǎn)按從左到右的順序打印,每一層打印到一行。 例如: 給定二叉樹:? [3,9,20,null,null,15,7] , ??? 3 ?? / ? 9? 20 ??? /? ?? 15?? 7 返回其層次遍歷結(jié)果: [ ? [3], ? [9,20], ? [15,7] ] 提示: 節(jié)點(diǎn)總數(shù) = 1000 1.題目要求我們從上到下按層打印二

    2024年02月12日
    瀏覽(15)
  • (數(shù)組與矩陣) 劍指 Offer 03. 數(shù)組中重復(fù)的數(shù)字 ——【Leetcode每日一題】

    (數(shù)組與矩陣) 劍指 Offer 03. 數(shù)組中重復(fù)的數(shù)字 ——【Leetcode每日一題】

    難度:簡(jiǎn)單 找出數(shù)組中重復(fù)的數(shù)字。 在一個(gè)長(zhǎng)度為 n 的數(shù)組 nums 里的所有數(shù)字都在 0~n-1 的范圍內(nèi)。數(shù)組中某些數(shù)字是重復(fù)的,但不知道有幾個(gè)數(shù)字重復(fù)了,也不知道每個(gè)數(shù)字重復(fù)了幾次。請(qǐng)找出數(shù)組中任意一個(gè)重復(fù)的數(shù)字。 示例 1: 輸入 : [2, 3, 1, 0, 2, 5, 3] 輸出 :2 或

    2024年02月16日
    瀏覽(20)
  • 劍指29.順時(shí)針打印矩陣 31 棧的壓入,彈出序列 03 數(shù)組中的重復(fù)數(shù)字 53缺失的數(shù)字 04二維數(shù)組中的查找

    劍指29.順時(shí)針打印矩陣 31 棧的壓入,彈出序列 03 數(shù)組中的重復(fù)數(shù)字 53缺失的數(shù)字 04二維數(shù)組中的查找

    回字形 思路:pushed數(shù)組里遍歷進(jìn)棧,遍歷時(shí)候,先進(jìn)棧,再判斷棧頂是否和poped序列的當(dāng)前指向的是否一樣,一樣就pop,直到不一樣為止,然后繼續(xù)遍歷進(jìn)棧。然后再判斷棧里面剩余的和poped序列指向的一不一樣,一樣,就把棧里面的pop,直到棧為空,只要有一個(gè)不一樣,就

    2024年02月16日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包