题解 | #螺旋矩阵#

螺旋矩阵

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

public class Solution {
    public ArrayList<Integer> spiralOrder(int[][] matrix) {
        if(matrix == null || matrix.length ==0){
            return new ArrayList<Integer>();
        }
        int row = matrix.length;
        int col = matrix[0].length;
        
        ArrayList<Integer> result = new ArrayList<Integer>();
        int start = 0;
        while(row > 2 * start && col > 2 * start ){
            print(matrix,result,start,row,col);
            start ++;
        }
        return result;
        
    }
    private void print(int[][] matrix, ArrayList<Integer> result,int start,int row,int col){
        int startX = start;
        int startY = start;
        int endX = col - 1 - start;
        int endY = row - 1 - start;
        //从左到右
        for(int i = startX;i<= endX;i++){
            result.add(matrix[startY][i]);
        }
        //从上到下
        if(startY< endY){
            for(int i = startY+1;i<=endY;i++){
                result.add(matrix[i][endX]);
            }
        }
        //从右到左
        if(endX > startX && startY < endY){
            for(int i = endX- 1 ;i>=startX;i--){
                result.add(matrix[endY][i]);
            }
        }
        //从上到下
        if(startY  < endY - 1 && startX < endX){
            for(int i = endY - 1;i>=startY +1;i--){
                result.add(matrix[i][startX]);
            }
        }
        
        
    }
}
全部评论

相关推荐

点赞 评论 收藏
分享
10-15 10:57
已编辑
武昌理工学院 FPGA工程师
狠赚笔第一人:老哥学院本没实习还想拿13k学Java狠赚笔呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务