Sword Finger Offer Brush Questions--GZ19--Print Matrix Clockwise

Insert picture description here
Problem solving:

import java.util.ArrayList;
public class Solution {
    
    
    public ArrayList<Integer> printMatrix(int [][] matrix) {
    
    
       //判断边界
        if(matrix.length == 0){
    
    
            return new ArrayList<Integer>(0);
        }
        //遍历方向--右下左上
        //先定义四个边界的初始位置
        int left = 0;
        int right = matrix[0].length-1;
        int down = matrix.length-1;
        int up = 0;
        //定义存放数据的list
        ArrayList<Integer> list = new ArrayList((right+1) * (down+1));
        //开始遍历
        while(true){
    
    
            //先往右
            for(int i = left; i <= right; i++){
    
    
                list.add(matrix[up][i]);
            }
            if(++up > down) break;
            //往下
            for(int i = up; i <= down; i++){
    
    
                list.add(matrix[i][right]);
            }
            if(--right < left) break;
            //往左
            for(int i = right; i >= left; i--){
    
    
                list.add(matrix[down][i]);
            }
            if(--down < up) break;
            //往上
            for(int i = down; i >= up; i--){
    
    
                list.add(matrix[i][left]);
            }
            if(++left > right) break;
        }
        return list;
    }
}

Guess you like

Origin blog.csdn.net/weixin_42118981/article/details/112914164
Recommended