nginx+uwsgi部署Django
阿新 • • 發佈:2022-05-08
順時針列印矩陣
題目
輸入一個矩陣,按照從外向裡以順時針的順序依次打印出每一個數字。
示例 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來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解決方法
思路
- 從題目示例可以看出,列印順序是 “從左到右,從上到下,從右到左,從下到上” 。
- 可以設定四個邊界 left , top , right , bottom ,遍歷要求的列印順序。
- 解題圖片和程式碼,圖片很清晰明瞭,程式碼也比自己的簡介
列印方向 | 1. 根據邊界列印 | 2. 邊界向內收縮 | 3. 是否列印完畢 |
---|---|---|---|
從左向右 | 左邊界left ,右邊界 right | 上邊界 top 加 1 | 是否 top > bottom |
從上向下 | 上邊界 top ,下邊界bottom | 右邊界 right 減 1 | 是否 l eft> right |
從右向左 | 右邊界 right ,左邊界left | 下邊界 bottom 減 1 | 是否 top> bottom |
從下向上 | 下邊界 bottom ,上邊界top | 左邊界 left 加 1 | 是否 left> right |
class Solution { public int[] spiralOrder(int[][] matrix) { if(matrix.length == 0) return new int[0]; int l = 0, r = matrix[0].length - 1, t = 0, b = matrix.length - 1, x = 0; int[] res = new int[(r + 1) * (b + 1)]; while(true) { for(int i = l; i <= r; i++) res[x++] = matrix[t][i]; // left to right. if(++t > b) break; for(int i = t; i <= b; i++) res[x++] = matrix[i][r]; // top to bottom. if(l > --r) break; for(int i = r; i >= l; i--) res[x++] = matrix[b][i]; // right to left. if(t > --b) break; for(int i = b; i >= t; i--) res[x++] = matrix[i][l]; // bottom to top. if(++l > r) break; } return res; } }