【剑指offer】之顺时针打印矩阵
2015-12-21 11:39
190 查看
题目描述:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:
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.
分析:
先求出打印一圈的函数,在把矩阵分成若干个圈来打印。
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.
分析:
先求出打印一圈的函数,在把矩阵分成若干个圈来打印。
java代码实现:
//矩阵按顺时针打印 private static void printbyCircle(int[][] obs) { int row = obs.length; int columns = 0 ; if(row > 0) columns = obs[0].length; if(row<0 || columns<0) return ; int start = 0; while(row>start*2 && columns>start*2) { printbycircle(obs,columns,row,start) ; start++; } } //打印一圈 private static void printbycircle(int[][] obs, int columns, int row,int start) { int endY = columns - 1 - start; int endX = row - 1 - start ; //从左到右打印一行 for(int i=start;i<=endX;i++) { System.out.print(" " + obs[start][i]); } //从上到下打印一列 for(int i=start+1;i<=endY;i++) { System.out.print(" " + obs[i][endX]); } //从右到左打印一行 for(int i=endX-1;i>=start;i--) { System.out.print(" " + obs[endY][i]); } //从下往上打印一列 for(int i=endY-1;i>=start+1;i--) { System.out.print(" " + obs[i][start]); } }
相关文章推荐
- jquery 插件扩展
- 对javascript匿名函数的理解(透彻版)
- jQuery学习笔记(三)
- 新手理解HTML、CSS、javascript之间的关系
- 几个简单的js正则验证
- angularJS权威教程自动化测试笔记(三)
- angularjs页面传参方式
- javascript中隐藏显示的样式表属性
- 实施和使用 Singleton 设计模式的有效方式
- 自定义标签(JspFragment类、invoke方法、开发带属性的标签)
- Ext.js5表单—登录表单(40)
- Ext.js5小鲱鱼域(表单域)(39)
- Js 获取当前时间
- Flow之一个新的Javascript静态类型检查器
- Node.js 事件循环
- css3 新属性
- 获取手机验证码js计时器
- android studio 配置react环境
- Ext.js5(radio group布局能力)(38)
- Node.js 回调函数