劍指Offer--順時針打印矩陣

順時針打印矩陣

題目描述

輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數(shù)字礼仗,例如绿满,如果輸入如下4 X 4矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數(shù)字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

思路

  1. 對于方陣,可以通過順時針遍歷每一層的方式坯钦,逐層遍歷蟀苛,得到結果
    可以想到益咬,對于最外層,只需要順時針遍歷四條邊即可屹逛,但對于里層础废,就不那么好處理了
    此時,按照從外層到內層的方向罕模,每遍歷一行/一列,都將這一行/列從矩陣中刪去,依次來保證遍歷每一層時帘瞭,這一層都在矩陣的最外層淑掌。
    遍歷過的每一行/列的刪除操作,不必真的刪除蝶念,只需要設定四個指針(行起始抛腕,行終止,列起始媒殉,列終止)担敌,遍歷一行后,移動響應的指針即可廷蓉。
    這樣全封,循環(huán)終止的條件就可以設定為:行終止-行起始 == 0 || 列終止-列起始==0
  2. 而對于非方陣:
    在方陣中,(行終止-行起始 == 0)桃犬,(列終止-列起始==0)一定是同時達到的刹悴,而對于非方陣,這兩個結束條件一定有一個比另個一個先達到攒暇,所以此時土匀,應該在循環(huán)中加上條件判斷,讓循環(huán)提前跳出形用。
# -*- coding:utf-8 -*-
class Solution:
    # matrix類型為二維列表就轧,需要返回列表
    def printMatrix(self, matrix):
        # write code here
        row_min,col_min,row_max,col_max = 0,0,len(matrix),len(matrix[0])
        list = []
        while row_max-row_min > 0 and col_max-col_min > 0 :
            i = row_min
            for j in range(col_min,col_max):
                list.append(matrix[i][j])
            row_min += 1
            if not row_max-row_min > 0 or not col_max-col_min > 0 :
                break

            j = col_max-1
            for i in range(row_min,row_max):
                list.append(matrix[i][j])
            col_max -= 1
            if not row_max - row_min > 0 or not col_max - col_min > 0:
                break

            i = row_max-1
            for j in range(col_min,col_max)[::-1]:
                list.append(matrix[i][j])
            row_max -= 1
            if not row_max - row_min > 0 or not col_max - col_min > 0:
                break

            j = col_min
            for i in range(row_min,row_max)[::-1]:
                list.append(matrix[i][j])
            col_min += 1
            if not row_max - row_min > 0 or not col_max - col_min > 0:
                break
        return list
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末证杭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子妒御,更是在濱河造成了極大的恐慌躯砰,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,331評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件携丁,死亡現(xiàn)場離奇詭異琢歇,居然都是意外死亡,警方通過查閱死者的電腦和手機梦鉴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,372評論 3 398
  • 文/潘曉璐 我一進店門李茫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肥橙,你說我怎么就攤上這事魄宏。” “怎么了存筏?”我有些...
    開封第一講書人閱讀 167,755評論 0 360
  • 文/不壞的土叔 我叫張陵宠互,是天一觀的道長。 經常有香客問我椭坚,道長予跌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,528評論 1 296
  • 正文 為了忘掉前任善茎,我火速辦了婚禮券册,結果婚禮上,老公的妹妹穿的比我還像新娘垂涯。我一直安慰自己烁焙,他們只是感情好,可當我...
    茶點故事閱讀 68,526評論 6 397
  • 文/花漫 我一把揭開白布耕赘。 她就那樣靜靜地躺著骄蝇,像睡著了一般。 火紅的嫁衣襯著肌膚如雪操骡。 梳的紋絲不亂的頭發(fā)上九火,一...
    開封第一講書人閱讀 52,166評論 1 308
  • 那天,我揣著相機與錄音当娱,去河邊找鬼吃既。 笑死,一個胖子當著我的面吹牛跨细,可吹牛的內容都是我干的鹦倚。 我是一名探鬼主播,決...
    沈念sama閱讀 40,768評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼冀惭,長吁一口氣:“原來是場噩夢啊……” “哼震叙!你這毒婦竟也來了掀鹅?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,664評論 0 276
  • 序言:老撾萬榮一對情侶失蹤媒楼,失蹤者是張志新(化名)和其女友劉穎乐尊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體划址,經...
    沈念sama閱讀 46,205評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡扔嵌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,290評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了夺颤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痢缎。...
    茶點故事閱讀 40,435評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖世澜,靈堂內的尸體忽然破棺而出独旷,到底是詐尸還是另有隱情,我是刑警寧澤寥裂,帶...
    沈念sama閱讀 36,126評論 5 349
  • 正文 年R本政府宣布嵌洼,位于F島的核電站,受9級特大地震影響封恰,放射性物質發(fā)生泄漏麻养。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,804評論 3 333
  • 文/蒙蒙 一俭驮、第九天 我趴在偏房一處隱蔽的房頂上張望回溺。 院中可真熱鬧,春花似錦混萝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,276評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至允粤,卻和暖如春崭倘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背类垫。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工司光, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人悉患。 一個月前我還...
    沈念sama閱讀 48,818評論 3 376
  • 正文 我出身青樓残家,卻偏偏與公主長得像,于是被迫代替她去往敵國和親售躁。 傳聞我的和親對象是個殘疾皇子坞淮,可洞房花燭夜當晚...
    茶點故事閱讀 45,442評論 2 359

推薦閱讀更多精彩內容