亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

【劍指offer】順時(shí)針打印矩陣

Hujiawei / 3279人閱讀

摘要:題目輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(shù)字,例如,如果輸入如下矩陣則依次打印出數(shù)字題解這個(gè)題目就是正常的模擬就好。此外還要注意判斷一下矩陣是的情況。

題目

輸入一個(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.

題解

這個(gè)題目就是正常的模擬就好。
定義四個(gè)變量。
top: 表示最上面的行;
bottom:表示最小面的行;
left:表示最左邊的列;
right: 表示最右邊的列;

左 -> 右,這個(gè)時(shí)候相當(dāng)于最上面這一行就打印完了,這個(gè)時(shí)候最上面的行top要++;

右 -> 下,這個(gè)時(shí)候相當(dāng)于最右邊這一列就打印完了,這個(gè)時(shí)候最右邊的列right要--;

右 -> 左,這個(gè)時(shí)候相當(dāng)于最下邊這一行就打印完了,這個(gè)時(shí)候最下邊的行bottom要--;

下 -> 上,這個(gè)時(shí)候相當(dāng)于最左邊這一列就打印完了,這個(gè)時(shí)候最左邊的列l(wèi)eft要--;

但是每一步完成之后可能都會(huì)遇到邊界條件:

1 2 3 4

比如上面這個(gè)case,top++之后就應(yīng)該跳出循環(huán),不應(yīng)該繼續(xù)走了。

1
2
3
4

再比如上面這個(gè)case,走到right--之后就應(yīng)該跳出循環(huán),不應(yīng)該繼續(xù)走了。

此外還要注意判斷一下矩陣是null的情況。

import java.util.ArrayList;
public class Solution {
    public ArrayList printMatrix(int [][] matrix) {
       if (matrix == null) return new ArrayList();
       int top = 0;
       int bottom = matrix.length - 1;
       int left = 0;
       int right = matrix[0].length - 1;
       ArrayList result = new ArrayList();
       while (top <= bottom && left <= right) {
           for (int i = left; i <= right; i++) {
               result.add(matrix[top][i]);
           }
           top++;
           if (top > bottom) {
               break;
           }
           for (int i = top; i <= bottom; i++) {
               result.add(matrix[i][right]);
           }
           right--;
           if (left > right) {
               break;
           }
           
          for (int i = right; i >= left; i--) {
              result.add(matrix[bottom][i]);
          }
           bottom--;
           if (top > bottom) {
               break;
           }
           
           for (int i = bottom; i >= top; i--) {
               result.add(matrix[i][left]);
           }
           left++;
           if (left > right) {
               break;
           }
       }
       return result;
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/72721.html

相關(guān)文章

  • LeetCode 精選TOP面試題【51 ~ 100】

    摘要:有效三角形的個(gè)數(shù)雙指針最暴力的方法應(yīng)該是三重循環(huán)枚舉三個(gè)數(shù)字??偨Y(jié)本題和三數(shù)之和很像,都是三個(gè)數(shù)加和為某一個(gè)值。所以我們可以使用歸并排序來解決這個(gè)問題。注意因?yàn)闅w并排序需要遞歸,所以空間復(fù)雜度為 ...

    Clect 評(píng)論0 收藏0
  • 【刷算法】時(shí)針打印矩陣

    摘要:題目描述輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(shù)字,例如,如果輸入如下矩陣則依次打印出數(shù)字解題傳入的參數(shù)為或者不是數(shù)組或者是空數(shù)組傳入的是一維數(shù)組 題目描述 輸入一個(gè)矩陣,按照從外向里以順時(shí)針的順序依次打印出每一個(gè)數(shù)字,例如,如果輸入如下矩陣: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次打印出數(shù)字 1...

    Terry_Tai 評(píng)論0 收藏0
  • 劍指offer系列——劍指 Offer 06. 從尾到頭打印鏈表(C語言)

    摘要:導(dǎo)航小助手劍指從尾到頭打印鏈表題目詳情解題思路源代碼總結(jié)劍指從尾到頭打印鏈表題目詳情輸入一個(gè)鏈表的頭節(jié)點(diǎn),從尾到頭反過來返回每個(gè)節(jié)點(diǎn)的值用數(shù)組返回。時(shí)間復(fù)雜度方法先反轉(zhuǎn)鏈表并求長度,在將反轉(zhuǎn)后的鏈表數(shù)據(jù)拷貝至數(shù)組中。 ...

    DevTTL 評(píng)論0 收藏0
  • 劍指Offer:機(jī)器人的運(yùn)動(dòng)范圍

    摘要:例如,當(dāng)為時(shí),機(jī)器人能夠進(jìn)入方格,因?yàn)?。?qǐng)問該機(jī)器人能夠達(dá)到多少個(gè)格子分析這題和上題劍指矩陣中的路徑屬于同一類型的題目。 題目 {% cq %} 地上有一個(gè)m行和n列的方格。一個(gè)機(jī)器人從坐標(biāo)0,0的格子開始移動(dòng),每一次只能向左,右,上,下四個(gè)方向移動(dòng)一格,但是不能進(jìn)入行坐標(biāo)和列坐標(biāo)的數(shù)位之和大于k的格子。 例如,當(dāng)k為18時(shí),機(jī)器人能夠進(jìn)入方格(35,37),因?yàn)?+5+3+7 = 1...

    CoderBear 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<