题解 | #螺旋矩阵#

螺旋矩阵

http://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31

import java.util.ArrayList;
public class Solution {
    public ArrayList<IntegerspiralOrder(int[][] matrix) {
        ArrayList<Integerans = new ArrayList<>();
        if(matrix.length == 0)return ans;   //这两句如果放在int m,n之后,[]的用例就过不了,别问,不知道为啥.
         // lrtb代表可走的,当前的空行,走过会更新(±1)
        
        int m = matrix.length;
        int n = matrix[0].length;
        int l=0, r=n-1, t=0, b=m-1;
        
        while(true){
            for(int i=l;i<=r;i++)ans.add(matrix[t][i]);
            if(++t>b)break;//到边界时,t==b,所以再+1会>b
            for(int i=t;i<=b;i++)ans.add(matrix[i][r]);
            if(--r<l)break;
            for(int i=r;i>=l;i--)ans.add(matrix[b][i]);
            if(--b<t)break;
            for(int i=b;i>=t;i--)ans.add(matrix[i][l]);
            if(++l>r)break;
        }
        return ans;
    }
}
全部评论

相关推荐

头像
05-12 09:14
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务