劍指offer:順時(shí)針打印矩陣-創(chuàng)新互聯(lián)

題目描述
輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(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.

成都創(chuàng)新互聯(lián)主營徐水網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā),徐水h5微信小程序定制開發(fā)搭建,徐水網(wǎng)站營銷推廣歡迎徐水等地區(qū)企業(yè)咨詢

這種按照某個(gè)方向打印的,我們可以一圈一圈從外到內(nèi)打印整個(gè)矩陣。在這個(gè)題目中,我們可以每次選擇一個(gè)起點(diǎn)(左上角),然后順時(shí)針打印一圈。

class Solution:
    # matrix類型為二維列表,需要返回列表
    def printMatrix(self, matrix):
        def helper(start_row, start_col):
            # 打印一圈的時(shí)候,向右這個(gè)方向是一定要打印的。
            # 其余三個(gè)方向需要滿足一定個(gè)條件后才會打印
            end_row = rows - start_row - 1
            end_col = cols - start_col - 1
            for i in range(start_col, end_col + 1):
                ans.append(matrix[start_row][i])

            if end_row > start_row:  # 只有當(dāng)行數(shù)大于2的時(shí)候才向下
                for i in range(start_row + 1, end_row + 1):
                    ans.append(matrix[i][end_col])

            # 只有當(dāng)列數(shù)大于2【且行數(shù)大于2】才向左。如果行數(shù)為1,那么就會重復(fù)打印同一行
            if end_col > start_col and end_row > start_row:
                for i in range(end_col - 1, start_col - 1, -1):
                    ans.append(matrix[end_row][i])

            # 只有當(dāng)行數(shù)大于_3_【且列數(shù)大于2】才向上。
            # 如果行數(shù)為2,那么在向左之后就已經(jīng)全部打印完了
            if end_row > start_row + 1 and end_col > start_col:
                for i in range(end_row - 1, start_row, -1):
                    ans.append(matrix[i][start_col])

        if not isinstance(matrix, list) or not isinstance(matrix[0], list):
            return
        rows, cols = len(matrix), len(matrix[0])
        ans = []
        start = 0
        # 判斷是否需要打印這一圈。通過觀察歸納得知,當(dāng)rows 和 cols都大于起點(diǎn)坐標(biāo)的時(shí)候需要打印
        while start * 2 < min(rows, cols):
            helper(start, start)
            start += 1

        return ans

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

當(dāng)前名稱:劍指offer:順時(shí)針打印矩陣-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://bm7419.com/article2/hddic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站用戶體驗(yàn)、網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、品牌網(wǎng)站建設(shè)、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作