思路:
上下左右设置四个边界
每走完一行或者一列,移动相应边界,当左边界大于右边界,或者上边界大于下边界时,结束
代码如下:
class Solution {public List<Integer> spiralOrder(int[][] matrix) {int t = 0 , b = matrix.length - 1, l = 0 , right = matrix[0].length - 1;List<Integer> result = new ArrayList<Integer>();while(true){for(int i = l ; i <= right ; i++){result.add(matrix[t][i]);k++;}t++;if(t > b)break;for(int i = t ; i <= b ; i++){result.add(matrix[i][right]);k++;}right--;if(right < l)break;for(int i = right ; i >= l ; i--){result.add(matrix[b][i]);k++;} b--;if(b < t)break;for(int i = b ; i >= t ; i--){result.add(matrix[i][l]);k++;}l++;if(l > right)break;}return result;}
}