网站建设运作流程,一键生成图片,彩票网站开发是否合法,wordpress第三方题目来源 54. 螺旋矩阵
题目思路
while循环只遍历环#xff0c;不成环就不遍历了 四个边界
上边界 top : 0下边界 bottom : matrix.length - 1左边界 left : 0右边界 right : matrix[0].length - 1
矩阵不一定是方阵 top bottom left r…题目来源 54. 螺旋矩阵
题目思路
while循环只遍历环不成环就不遍历了 四个边界
上边界 top : 0下边界 bottom : matrix.length - 1左边界 left : 0右边界 right : matrix[0].length - 1
矩阵不一定是方阵 top bottom left right 是循环的条件 无法构成“环”了就退出循环退出时可能是这 3 种情况之一 top bottom left right —— 剩一行 top bottom left right —— 剩一列 top bottom left right —— 剩一项也算 一行/列 处理剩下的单行或单列 因为是按顺时针推入结果数组的所以 剩下的一行从左至右 依次推入结果数组 剩下的一列从上至下 依次推入结果数组
比如[[3],[4]] 左右相等那么我们从上至下遍历
if(left right){for(int i top;ibottom;i){list.add(matrix[i][left]);}
}代码实现
class Solution {public ListInteger spiralOrder(int[][] matrix) {ArrayListInteger list new ArrayList();int left 0;int top 0;int bottom matrix.length-1;int right matrix[0].length-1;while(left right top bottom){// 上层for(int i left;i right;i){list.add(matrix[top][i]);}//右侧for(int i top;i bottom;i){list.add(matrix[i][right]);}//下侧for(int i right;ileft;i--){list.add(matrix[bottom][i]);}//左侧for(int i bottom;itop;i--){list.add(matrix[i][left]);}left;top;bottom--;right--;}if(top bottom){for(int i left;iright;i){list.add(matrix[top][i]);}}else if(left right){for(int i top;ibottom;i){list.add(matrix[i][left]);} }return list;}
}