• 顺时针打印矩阵


    题目:

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.

    思路:这个题比较麻烦,但是把每一步都拆解开思路就清晰了。

    实现代码:

    import java.util.ArrayList;
    public class Solution {
        public ArrayList<Integer> printMatrix(int [][] matrix) {
            if(matrix == null)
               return null;
            int rows = matrix.length;
            if(rows <= 0)
                return null;
            int columns = matrix[0].length;
            
            ArrayList<Integer> ret = new ArrayList<Integer>();
            int start = 0;
            while(rows > start * 2 && columns > start * 2) {
                per(ret, matrix, rows, columns, start);
                start ++;
            }
            return ret;
        }
        
        public void per(ArrayList<Integer> list, int[][] matrix, int rows, int columns, int start) {
            int endR = columns - start - 1;
            int endC = rows - start - 1;
            
            //打印上面一行
            for(int i=start; i<=endR; i++) {
                list.add(matrix[start][i]);
            }
            
            //打印右边一列
            if(start < endC)
                for(int i=start+1; i<=endC; i++) {
                    list.add(matrix[i][endR]);
                }
        
            //打印下面一行
            if(start < endR && start < endC)
                for(int i=endR-1; i>=start; i--) {
                       list.add(matrix[endC][i]);
                }
            
            //打印左边一列
            if(start < endR && start < endC - 1)
                for(int i=endC-1; i>=start+1; i--) {
                    list.add(matrix[i][start]);
                }
        }
    }
  • 相关阅读:
    WebUploader IE9下报错
    raphael 支持group(简)
    SVG image xlink:href 设置失败
    活动倒计时代码(精确到毫秒)jquery插件
    PHP连续签到
    PHP判断是否微新浏览器
    php中文匹配
    PHP+mysql统计排名第几位
    php随机抽奖实例分析
    类似a:hover的伪类的注解
  • 原文地址:https://www.cnblogs.com/wxisme/p/5320037.html
Copyright © 2020-2023  润新知