• 20:顺时针打印矩阵


    import java.util.ArrayList;
    
    /**
     * 面试题20:顺时针打印矩阵
     * 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
     * 例如,如果输入如下矩阵:
     * 1 2 3 4
     * 5 6 7 8
     * 9 10 11 12
     * 13 14 15 16
     * 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
     */
    public class _20_printMatrix {
        public static void main(String[] args){
            Solution20 solution20 = new Solution20();
            int[][] a={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
            int[][] a1={{1},{2},{3},{4}};
            ArrayList<Integer> res =solution20.printMatrix(a1);
            for(Integer o:res){
                System.out.print(o+"、");
            }
        }
    }
    class Solution20 {
        public ArrayList<Integer> printMatrix(int [][] matrix) {
            ArrayList<Integer> res = new ArrayList<Integer>();
            int rowsEnd=0; //每次遍历结尾行坐标
            int columnsEnd=0;//每次遍历结尾列坐标
            int rowsLen=matrix.length;
            int columnsLen=matrix[0].length;
            int count=0;//标记打印的圈数
            if(rowsLen<=0||columnsLen<=0){
                return null;
            }
            while(rowsLen>count*2&&columnsLen>count*2){
                rowsEnd=rowsLen-count-1;
                columnsEnd=columnsLen-count-1;
                for(int i=count;i<=columnsEnd;i++){ //从左到右
                    res.add(matrix[count][i]);
                }
                if(count<rowsEnd){
                    for(int j=count+1;j<=rowsEnd;j++){ //从上到下
                        res.add(matrix[j][columnsEnd]);
                    }
                }
                if(count<rowsEnd&&count<columnsEnd){ //从右到左
                    for(int k=columnsEnd-1;k>=count;k--){
                        res.add(matrix[rowsEnd][k]);
                    }
                }
                if(count<columnsEnd&&count<rowsEnd-1){ //从下到上
                    for(int p=rowsEnd-1;p>=count+1;p--){
                        res.add(matrix[p][count]);
                    }
                }
                count++;
            }
            return res;
        }
    }
    
  • 相关阅读:
    CentOS6 破解登录密码
    CentOS 添加硬盘创建并挂载分区
    CentOS 安装开发工具包
    CentOS vim的使用
    CentOS tcpdump的使用实例
    CentOS7没有ifconfig/route/arp/netstat等命令的解决方案
    CentOS 查看系统 CPU 个数、核心数、线程数
    Linux系统中的load average
    Python基础-shelve模块
    Python基础-configparser和hashlib模块
  • 原文地址:https://www.cnblogs.com/andy-zhou/p/6549308.html
Copyright © 2020-2023  润新知