本文共 1285 字,大约阅读时间需要 4 分钟。
本人对java语言更熟悉,所以剑指offer代码都是通过Java实现,且涉及的核心代码全部通过牛客网的测试用例检查,感谢牛客网为我检验程序提供了极大帮助!main函数是为了在自己运行程序时,运行结果更直观化。
import java.util.ArrayList;/** * @author xhl * 顺时针打印矩阵 * 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如, 如果输入如下矩阵: 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 */public class offerT20 { /** * @param args */ /*通过观察发现每一圈开始的元素行号和列号相同,定为start,通过控制start,控制有几个圈*/ public ArrayListprintMatrix(int [][] matrix) { if(matrix==null){ return null; } int start=0; ArrayList list=new ArrayList (); //圈的个数控制:最里面的圈满足start<<0x1 <<0x1 list){ int endx=matrix.length-1-start; int endy=matrix[0].length-1-start; //第一层 for(int i=start;i<=endy;i++){ list.add(matrix[start][i]); } //第二层 for(int i=start+1;i<=endx;i++){ list.add(matrix[i][endy]); } //第三层,要判断是否为单行,单行就不需要第3层了 if(start =start;i--){ list.add(matrix[endx][i]); } } //第四层,要判断是否为单列,单行就不需要第4层了 if(start start;i--){ list.add(matrix[i][start]); } } } public static void main(String[] args) { // TODO Auto-generated method stub offerT20 o = new offerT20(); int[][] matrix={ {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; ArrayList list=new ArrayList (); list=o.printMatrix(matrix); System.out.println(list); }}
转载地址:http://cipgi.baihongyu.com/