leetcode 中等难度 第54题 螺旋矩阵

给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。

思路是对的,就是在边界的处理上,有一点小问题。

class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        List<Integer> list = new ArrayList<>();
        if(matrix==null || matrix.length==0 || matrix[0].length == 0 ){return list;}
        int rows = matrix.length-1 ;
        int columns = matrix[0].length ;
        int start = 0 ;
        int end = columns-1 ;
        
        while(start <= end && start<=rows){
          
            for(int i = start ; i <= end ; i ++){
                list.add(matrix[start][ i]);
            }
            for(int i = start + 1 ; i <= rows ; i ++){
                list.add(matrix[i][end]);
            }
            if(start < end && start< rows){
                for(int i = end-1 ; i > start ; i --){
                list.add(matrix[rows][i]);
            }
            for(int i =rows ; i > start ; i -- ){
                list.add(matrix[i][start]);
            }}
            



            
            start ++ ;
            end -- ;
            rows -- ;

        }
        
        return list ;

    }
}

时间复杂度:O(mn)
空间复杂度:O(m+n)

边界的界定,和二分法中边界的界定类似,要找到一个判定条件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值