成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【劍指offer】順時針打印矩陣

Hujiawei / 3229人閱讀

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

題目

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

題解

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

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

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

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

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

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

1 2 3 4

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

1
2
3
4

再比如上面這個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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/72721.html

相關(guān)文章

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

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

    Clect 評論0 收藏0
  • 【刷算法】時針打印矩陣

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

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

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

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

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

    CoderBear 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<