剑指offer:顺时针打印矩阵
程序员文章站
2022-07-12 09:55:09
...
试题:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 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.
代码:
把矩阵按照规则打印出来即可
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
int row = matrix.length;
int col = matrix[0].length;
if(col==0 || row==0)
return null;
ArrayList<Integer> list = new ArrayList<Integer>();
int startRow = 0;
int endRow = row-1;
int startCol = 0;
int endCol = col-1;
while(startRow<=endRow&&startCol<=endCol){
if(startRow==endRow){
for(int i=startCol;i<=endCol;i++)
list.add(matrix[startRow][i]);
return list;
}
if(startCol==endCol){
for(int i=startRow;i<=endRow;i++)
list.add(matrix[i][startCol]);
return list;
}
for(int i=startCol;i<=endCol;i++)
list.add(matrix[startRow][i]);
for(int i=startRow+1;i<=endRow;i++)
list.add(matrix[i][endCol]);
for(int i=endCol-1;i>=startCol;i--)
list.add(matrix[endRow][i]);
for(int i=endRow-1;i>=startRow+1;i--)
list.add(matrix[i][startCol]);
startRow = startRow + 1;
endRow = endRow - 1;
startCol = startCol + 1;
endCol = endCol - 1;
}
return list;
}
}
上一篇: C++ 扩展卡尔曼滤波
下一篇: mysql免安装版配置
推荐阅读
-
《剑指offer》面试题6 重建二叉树
-
剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。
-
python 顺时针打印矩阵的超简洁代码
-
剑指offer31:整数中1出现的次数(从1到n整数中1出现的次数)
-
剑指offer28:找出数组中超过一半的数字。
-
剑指offer27:按字典序打印出该字符串中字符的所有排列
-
C#版剑指Offer-001二维数组中的查找
-
剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
-
剑指offer13:数组[奇数,偶数],奇数偶数相对位置不变。
-
剑指offer第二天