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

    这是碰到的第一个钻牛角尖的算法题,刚开始思路不停的跑偏,总想着一行或者一列之间行列号有什么关系,可是找寻好久并无规律可循

    在网上看了大神们写的代码,瞬间被秒成了渣渣

    思路:

      先定义一个ArrayList集合,再按顺时针顺序把每一个元素加到集合中去,再遍历集合就可拿到每一个数据了

      代码奉上:

     1 public ArrayList<Integer> printMatrix(int [][] matrix) {
     2         ArrayList<Integer> list = new ArrayList<Integer>();
     3         int left = 0;
     4         int right = matrix[0].length-1;
     5         int top = 0;
     6         int bottom = matrix.length-1;
     7         if(matrix[0].length==0||matrix.length==0){
     8             return null;
     9         }
    10         while(left<=right && top<=bottom){
    11             for(int i=left;i<=right;i++){
    12                 list.add(matrix[top][i]);
    13             }
    14             for(int j=top+1;j<=bottom;j++){
    15                 list.add(matrix[j][right]);
    16             }
    17             if(top!=bottom){
    18                 for(int k=right-1;k>=left;k--){
    19                     list.add(matrix[bottom][k]);
    20                 }
    21             }
    22             if(left!=right){
    23                 for(int l=bottom-1;l>top;l--){
    24                     list.add(matrix[l][left]);
    25                 }
    26             }
    27             
    28             top++;left++;bottom--;right--;
    29         }
    30         return list;
    31         
    32     }

    并提醒自己不要钻牛角尖不要钻牛角尖!!!!

  • 相关阅读:
    【转】 Linux进程间通信
    Django中的Templates
    Django中的应用
    url的使用
    Django框架的使用
    Django的安装
    文件上传
    flask中的request和response
    模板
    静态文件处理
  • 原文地址:https://www.cnblogs.com/rgever/p/8779784.html
Copyright © 2011-2022 走看看