剑指offer第19题(顺时针打印矩阵)
来源:互联网 发布:asc软件 编辑:程序博客网 时间:2024/05/16 12:37
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
思想:首先找到打印的条件是row>2*startY,cols>2*startX;然而每次打印的startX=StartY。然后寻找打印一圈的步骤,第一步:满足打印条件即可打印。第二步:至少有两行。第三步:至少要两行两列。第四步:只少要三行两列。
java代码:
import java.util.ArrayList;public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList<Integer> result=new ArrayList<Integer>(); if(matrix==null||matrix.length==0){ return result; } int left=0; int right=matrix[0].length-1; int top=0; int bottom=matrix.length-1; while(left<=right && top<=bottom){ for(int i=left;i<=right;i++){ result.add(matrix[top][i]); } for(int j=top+1;j<=bottom;j++){ result.add(matrix[j][right]); } if(bottom!=top){ for(int m=right-1;m>=left;m--){ result.add(matrix[bottom][m]); } } if(left!=right) { if(bottom>top+1){ for(int n=bottom-1;n>top;n--){ result.add(matrix[n][left]); } } } top++; left++; right--; bottom--; } return result; }}python代码:
import java.util.ArrayList;public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList<Integer> result=new ArrayList<Integer>(); if(matrix==null||matrix.length==0){ return result; } int left=0; int right=matrix[0].length-1; int top=0; int bottom=matrix.length-1; while(left<=right && top<=bottom){ for(int i=left;i<=right;i++){ result.add(matrix[top][i]); } for(int j=top+1;j<=bottom;j++){ result.add(matrix[j][right]); } if(bottom!=top){ for(int m=right-1;m>=left;m--){ result.add(matrix[bottom][m]); } } if(left!=right) { if(bottom>top+1){ for(int n=bottom-1;n>top;n--){ result.add(matrix[n][left]); } } } top++; left++; right--; bottom--; } return result; }}
阅读全文
0 0
- 剑指offer第19题(顺时针打印矩阵)
- 剑指offer:第20题顺时针打印矩阵;
- 剑指offer 19 顺时针打印矩阵
- 剑指Offer(19)______顺时针打印矩阵
- 剑指offer(19)—顺时针打印矩阵
- 牛客网-剑指offer-19-顺时针打印矩阵
- 【剑指offer】题20:顺时针打印矩阵
- (《剑指Offer》笔记)顺时针打印矩阵
- 剑指Offer:顺时针打印矩阵(JAVA)
- 剑指offer(21):顺时针打印矩阵
- 剑指offer(16)-顺时针打印矩阵
- 剑指Offer——(19)顺时针打印矩阵
- 【剑指offer-解题系列(19)】顺时针打印矩阵
- 【剑指offer】顺时针打印矩阵
- 剑指offer--顺时针打印矩阵
- 剑指offer--顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- 私人文章
- 二叉树线索化
- Android 代码混淆语法讲解及常用模板
- OpenCV学习笔记(一)——Linux下的OpenCV配置
- “实现模拟三次密码输入”的场景的c程序
- 剑指offer第19题(顺时针打印矩阵)
- SPOJREPEATS-Repeats
- 明确问题,加以解决。
- Linux 基础学习篇1
- Mybatis学习笔记-关联表查询的问题 (一对多关联)
- hibernate注解关联
- android 7.1.1下android.permission.SYSTEM_ALERT_WINDOW改动及BUG
- u32 u16 s32 s16 u8 s8是什么
- vue.js 下拉刷新插件(demo)