zoukankan      html  css  js  c++  java
  • 19.顺时针打印二维数组

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,

    例如,如果输入如下4 X 4矩阵:

    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) {
            int length = matrix.length;   //行长度:矩阵的长
            int width = matrix[0].length; //列长度:矩阵的宽
            ArrayList<Integer> arrayList = new ArrayList<Integer>();
            if(matrix == null || length==0 || width==0) return null;
            if(length==1){
                for(int a1 = 0;a1<width;a1++){
                    arrayList.add(matrix[0][a1]);
                }
                return arrayList;
            }
            if(width==1){
                for(int a2 = 0;a2<length;a2++){
                    arrayList.add(matrix[a2][0]);
                }
                return arrayList;
            }
    
            //一次循环是一圈
            for(int i =0;i<length-i;i++){
                int j=i;
                if(j<width-i) {
                    //一圈的上边
                    for (;j<width - i; j++) {
                        arrayList.add(matrix[i][j]);
                    }
                    //一圈的右边
                    for (int k = i + 1; k < length - i; k++) {
                        arrayList.add(matrix[k][width - 1 - i]);
                    }
    
                    int f = length - 1 - i; //下边所在的行数
                    if (f != i) {
                        //一圈的下边
                        for (int m = width - 1 - i - 1; m >= i; m--) {
                            arrayList.add(matrix[f][m]);
                        }
                        //一圈的左边
                        for (int n = f - 1; n > i; n--) {
                            arrayList.add(matrix[n][i]);
                        }
                    }
                }
            }
            return arrayList;
        }
    }
  • 相关阅读:
    UML类图与类的关系详解
    UML用例图总结
    jQuery随机抽取数字号代码
    贪心算法
    回溯法实例详解(转)
    React 表单元素实例
    React 组件嵌套 父子关系
    React 滚动事件
    error: Error trying to parse settings: Unexpected trailing characters in PackagesUserPreferences.sublime-settings:9:2 reloading settings Packages/User/Preferences.sublime-settings
    jquery 下拉框左右选择
  • 原文地址:https://www.cnblogs.com/wzQingtTian/p/10662563.html
Copyright © 2011-2022 走看看