关闭

剑指offer--顺时针打印矩阵

标签: 剑指offer-java实现牛客网在线编程
219人阅读 评论(0) 收藏 举报
分类:

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


AC代码:

import java.util.ArrayList;

public class Solution {
    public ArrayList<Integer> printMatrix(int [][] matrix) {
       ArrayList<Integer> arr = new ArrayList<>();
       int row1 = 0;
       int row2 = matrix.length;
       int col1 = 0;
       int col2 = matrix[0].length;

       while(true){
           //从左到右打印
           for(int i = col1 ; i < col2 ; i++){
               arr.add(matrix[row1][i]);
           }
           row1++;
           if (row1 >= row2){
               break;
           }

           //从上到下打印
           for(int i = row1 ; i < row2 ; i++){
               arr.add(matrix[i][col2-1]);
           }
           col2--;
           if ( col2 <= col1){
               break;
           }

           //从右到左打印
           for(int i = col2-1 ; i >= col1 ; i--){
               arr.add(matrix[row2-1][i]);
           }
           row2--;
           if ( row1 >= row2){
               break;
           }

           //从下到上打印
           for(int i = row2-1 ; i >= row1 ; i--){
               arr.add(matrix[i][col1]);
           }
           col1++;
           if ( col1 >= col2){
               break;
           }
       }

       return arr;
    }
}
1
0
查看评论

剑指Offer--顺时针打印矩阵问题

题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.题目分析这个题目看起来比较简单...
  • wangyang1354
  • wangyang1354
  • 2017-06-14 16:03
  • 513

剑指offer--顺时针打印矩阵

题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. import java.util.Ar...
  • kangaroo835127729
  • kangaroo835127729
  • 2015-04-11 18:59
  • 629

剑指-顺时针打印矩阵

注意:在每次进行循环进行读写时,一定要判断left、right、top、bom的关系 vectorint> printMatrix(vectorvectorint> > matrix) { vectorint> vecResult; ...
  • wdfscsdn2015
  • wdfscsdn2015
  • 2018-01-21 16:01
  • 10

剑指offer--面试题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. python实现...
  • qingyujean
  • qingyujean
  • 2016-09-27 17:42
  • 124

剑指offer--面试题29:顺时针打印矩阵

#include void Print_Circle(int (*A)[3],int rows,int cols,int start) { int endX=cols-1-start; int endY=rows-1-start; //从左到右打印一行 for(int i=start;i&l...
  • u010726692
  • u010726692
  • 2017-07-25 10:05
  • 89

剑指offer--面试题20:顺时针打印矩阵--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、1...
  • u012289407
  • u012289407
  • 2015-06-19 19:44
  • 372

剑指Offer面试题20(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. 当遇到一个复杂的问题的时候,我们...
  • jsqfengbao
  • jsqfengbao
  • 2015-08-02 20:41
  • 3221

经典算法——顺时针打印矩阵

题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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. ...
  • geekmanong
  • geekmanong
  • 2016-03-09 10:21
  • 1886

剑指Offer:面试题6重建二叉树

重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 前序遍历:是先根节...
  • u012162920
  • u012162920
  • 2016-08-17 14:18
  • 220

剑指offer-顺时针打印矩阵

题目描述   输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字, 例如, 如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 1213 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10 题目分析   顺时...
  • ls_kindling
  • ls_kindling
  • 2015-09-27 13:33
  • 169
    个人资料
    • 访问:155565次
    • 积分:4927
    • 等级:
    • 排名:第6843名
    • 原创:329篇
    • 转载:0篇
    • 译文:0篇
    • 评论:80条
    博客专栏
    最新评论