本文主要是介绍力扣54 螺旋矩阵【如何优雅的写好代码】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这题本质是二维数组的遍历,更多考察的是对写代码的基本功。建议先写好伪代码这样才不会乱,特别是对边界条件的把握。
class Solution {public List<Integer> spiralOrder(int[][] matrix) {if (matrix.length == 0 || matrix[0].length == 0) {return new ArrayList<>();}int m = matrix.length, n = matrix[0].length;int up = 0, down = m - 1, left = 0, right = n - 1;List<Integer> list = new ArrayList<>();while (list.size() < m * n) {// 从左到右遍历上层for (int j = left; j <= right && list.size() < m * n; j++) {list.add(matrix[up][j]);}up++;// 从上到下遍历右侧for (int i = up; i <= down && list.size() < m * n; i++) {list.add(matrix[i][right]);}right--;// 从右到左遍历下层for (int j = right; j >= left && list.size() < m * n; j--) {list.add(matrix[down][j]);}down--;// 从下到上遍历左侧for (int i = down; i >= up && list.size() < m * n; i--) {list.add(matrix[i][left]);}left++;}return list;}
}
这篇关于力扣54 螺旋矩阵【如何优雅的写好代码】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!