【问题标题】:How do I fix the error in Leetcode 54. Spiral Matrix code?如何修复 Leetcode 54. 螺旋矩阵代码中的错误?
【发布时间】:2021-04-01 21:33:13
【问题描述】:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        


    if len(matrix) == 0:
        return []
    
    min_row, min_col = 0, 0
    max_row, max_col = len(matrix)-1, len(matrix[0])-1
    result = []
    
    
    
    while min_row <= max_row and min_col <= max_col:
        
        #top wall
    
        for i in range(min_col, max_col+1):
            result.append(matrix[min_row][i])
           
    
        min_row += 1
    
        #right wall
    
        for i in range(min_row, max_row+1):
            result.append(matrix[i][max_col])
            
            
        max_col -= 1
    
        #bottom wall
    
        for i in range(max_col, min_col-1, -1):
            result.append(matrix[max_row][i])
            
            
        max_row -= 1
    
        #left wall
    
        for i in range(max_row, min_row-1, -1):
            result.append(matrix[i][min_col])
            
            
        min_col += 1
        
    return result

我需要帮助,因为我的代码未能通过测试用例。它通过了基本的测试用例,但我无法弄清楚这个测试用例。 输入:[[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出:[1,2,3,4,8,12,11,10,9,5,6,7,6] 预期:

【问题讨论】:

    标签: arrays python-3.x loops matrix spiral


    【解决方案1】:

    我已经用 JavaScript 解决了这个问题,也许这会有所帮助

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

    var spiralOrder = function(matrix) {
      if (matrix.length == 0) {
        return [];
      }
      let result = [];
      let rowStart = 0;
      let rowEnd = matrix.length - 1;
      let colStart = 0;
      let colEnd = matrix[0].length - 1;
      while (true) {
        // top
        for (let i = colStart; i <= colEnd; i++) {
          result.push(matrix[rowStart][i]);
        }
          
        rowStart++;
          
        if (rowStart > rowEnd) {
          return result;
        }
          
        // right
        for (let i = rowStart; i <= rowEnd; i++) {
          result.push(matrix[i][colEnd]);
        }
          
        colEnd--;
          
        if (colEnd < colStart) {
          return result;
        }
          
        // bottom
        for (let i = colEnd; i >= colStart; i--) {
          result.push(matrix[rowEnd][i]);
        }
          
        rowEnd--;
          
        if (rowEnd < rowStart) {
          return result;
        }
          
        // left
        for (let i = rowEnd; i >= rowStart; i--) {
          result.push(matrix[i][colStart]);
        }
          
        colStart++;
          
        if (colStart > colEnd) {
          return result;
        }
          
      }
      return result;
    };
    
    console.log(
      spiralOrder([[2, 3, 4], [5, 6, 7], [8, 9, 10], [11, 12, 13], [14, 15, 16]])
    );
    console.log(spiralOrder([[7], [9], [6]]));
    console.log(spiralOrder([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]]));
    console.log(spiralOrder([[1, 2, 3], [4, 5, 6], [7, 8, 9]]));

    【讨论】:

    • 虽然这可能会解决类似(或可能相同)的问题,但问题是在 Python 中,所以我不确定这会有什么帮助。
    • 你可以用同样的方法在python中求解
    猜你喜欢
    • 2022-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    相关资源
    最近更新 更多