剑指offer 顺时针打印矩阵
2015-08-14 14:06
197 查看
解法一:
1. 循环方式
解法二:
分成两步,思路清晰
解法三:
递归方式,关键是大矩阵复制成小矩阵
1. 循环方式
package test; public class dayin { public static int[][] sprint(int n){ int[][] r=new int ; int startx=0; int endx=n-1; int starty=0; int endy=n-1; int k=1; while(startx<=endx && starty<=endy){ for(int i=startx;i<=endx;i++){ r[starty][i]=k; k++; } starty++; for(int i=starty;i<=endy;i++){ r[i][endx]=k; k++; } endx--; for(int i=endx;i>=startx;i--){ r[endy][i]=k; k++; } endy--; for(int i=endy;i>=starty;i--){ r[i][startx]=k; k++; } startx++; } return r; } public static void main(String[] args) { // TODO Auto-generated method stub int n=4; int[][] r=sprint(n); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ System.out.print(r[i][j]); System.out.print(" "); } System.out.print("\n"); } } }
解法二:
分成两步,思路清晰
import java.util.ArrayList; public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { ArrayList<Integer> result=new ArrayList<Integer>(); if(matrix==null) return null; int start=0; int height=matrix.length; int width=matrix[0].length; while(height>2*start && width>2*start){ result.addAll(printMatrixFun(matrix,start)); start++; } return result; } private ArrayList<Integer> printMatrixFun(int[][] matrix,int start){ ArrayList<Integer> result=new ArrayList<Integer>(); int endx=matrix[0].length-1-start; int endy=matrix.length-1-start; for(int i=start;i<=endx;i++){ result.add(matrix[start][i]); } if(start<endy){ for(int i=start+1;i<=endy;i++) result.add(matrix[i][endx]); } if(start<endx && start<endy){ for(int i=endx-1;i>=start;i--){ result.add(matrix[endy][i]); } } if(start<endx && start<endy-1){ for(int i=endy-1;i>=start+1;i--) result.add(matrix[i][start]); } return result; } }
解法三:
递归方式,关键是大矩阵复制成小矩阵
相关文章推荐
- 前端开发框架选型清单
- jQuery的文档处理 --内部处理
- 《JS设计模式笔记》构造函数和工厂模式创建对象
- js 基础
- jquery 中 $$
- CSS小技巧
- jQuery中live绑定的事件与解除绑定
- js Array function--模拟栈和队列
- 如何使用样式
- jQuery+AJAX实现网页无刷新上传
- 没学过CSS等前端的我,也想美化一下自己的博客
- HDU 1015 Safecracker (很棒的一道DFS)
- JS函数式编程【译】4.1 部分函数应用和珂理化
- jquery.form.js实现将form提交转为ajax方式提交的使用方法
- jQuery插件Skippr实现焦点图
- 一个没什么特色的DIV+CSS布局,求指正
- node.js forever使用
- JS语言核心
- js 是否为空
- JavaSE----API之常用类(StringBuffer、Integer、Character)