剑指offer_ 顺时针打印矩阵
题目描述
下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10

解题思路
1 import java.util.ArrayList; 2 public class Solution { 3 public ArrayList<Integer> printMatrix(int [][] matrix) { 4 ArrayList<Integer> ret = new ArrayList<>(); 5 int r1=0;int c1=0;int r2=matrix.length-1; int c2=matrix[0].length-1; 6 while(r1 <= r2 && c1 <= c2){ 7 for(int i=c1;i<=c2;i++){ 8 ret.add(matrix[r1][i]); 9 } 10 for(int i=r1+1;i<=r2;i++){ 11 ret.add(matrix[i][c2]); 12 } 13 if (r1 != r2) 14 for(int i=c2-1;i>=c1;i--){ 15 ret.add(matrix[r2][i]); 16 } 17 if (c1 != c2) 18 for(int i=r2-1;i>=r1+1;i--){ 19 ret.add(matrix[i][c1]); 20 } 21 r1++; r2--; c1++; c2--; 22 23 } 24 return ret; 25 } 26 }
r1,c1相当于左上角点的横纵坐标,r2,c2相当于右下角点的横纵坐标
注意两个特殊情况


浙公网安备 33010602011771号