思路:
上下左右設置四個邊界
每走完一行或者一列,移動相應邊界,當左邊界大于右邊界,或者上邊界大于下邊界時,結束
代碼如下:
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;}
}