https://leetcode-cn.com/problems/spiral-matrix/

    • 注意此题不是一定是正方形的,
      1. public List<Integer> spiralOrder(int[][] matrix) {
      2. int leftRow = 0;
      3. int leftCol = 0;
      4. int rightRow = matrix.length - 1;
      5. int rightCol = matrix[0].length - 1;
      6. List<Integer> list = new ArrayList<>();
      7. while (leftRow <= rightRow && leftCol <= rightCol) {
      8. if (leftRow == rightRow ) { // 一条躺着的长方形 || 一个块
      9. for (int i = leftCol; i <= rightCol; i++) {
      10. list.add(matrix[leftRow][i]);
      11. }
      12. } else if (leftCol == rightCol) { // 一条竖着的长方形 || 一个块
      13. for (int i = leftRow; i <= rightRow; i++) {
      14. list.add(matrix[i][leftCol]);
      15. }
      16. } else {
      17. for (int i = leftCol; i < rightCol; i++) {
      18. list.add(matrix[leftRow][i]);
      19. }
      20. for (int i = leftRow; i < rightRow; i++) {
      21. list.add(matrix[i][rightCol]);
      22. }
      23. for (int i = rightCol; i > leftCol; i--) {
      24. list.add(matrix[rightRow][i]);
      25. }
      26. for (int i = rightRow; i > leftRow; i--) {
      27. list.add(matrix[i][leftCol]);
      28. }
      29. }
      30. leftRow++;
      31. leftCol++;
      32. rightRow--;
      33. rightCol--;
      34. }
      35. return list;
      36. }