顺时针打印矩阵
来源:互联网 发布:华为交换机端口命名 编辑:程序博客网 时间:2024/06/05 06:56
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
package matrix;import java.util.ArrayList;public class Solution {public static ArrayList<Integer> printMatrix(int[][] matrix) {int m = matrix.length;int n = matrix[0].length;ArrayList<Integer> list = new ArrayList<Integer>();if (m == 0 && n == 0) {return list;}if (m == 1) {for (int j = 0; j < n; j++) {list.add(matrix[0][j]);}return list;}if (n == 1) {for (int i = 0; i < m; i++) {list.add(matrix[i][0]);}return list;}int startx = 0;int starty = 0;int endx = m - 1;int endy = n - 1;while (startx <= endx && starty <= endy) {if(startx==endx){for(int j=starty;j<=endy;j++){list.add(matrix[startx][j]);}return list;}if(starty==endy){for(int i=startx;i<=endx;i++){list.add(matrix[i][starty]);}return list;}for (int j = starty; j <= endy; j++) {list.add(matrix[startx][j]);}for (int i = startx + 1; i <= endx; i++) {list.add(matrix[i][endy]);}for (int j = endy - 1; j >= starty; j--) {list.add(matrix[endx][j]);}for (int i = endx - 1; i >= startx + 1; i--) {list.add(matrix[i][starty]);}startx++;starty++;endx--;endy--;}return list;}public static void main(String[] args) {int[][] matrix={{1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15}};System.out.println(printMatrix(matrix));}}
0 0
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 矩阵顺时针打印
- 顺时针打印矩阵
- 顺时针打印矩阵[算法]
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 什么是汉明窗?加Hanmming窗的作用?
- 最大子列和问题
- 瑶瑶带你玩激光坦克(暴力)
- 关于ArcGIS的疑惑--只支持ArcGIS Desktop的接口
- css经验总结
- 顺时针打印矩阵
- UIday0801:UINavigationController视图控制器的属性和用法
- 自编码算法与稀疏性
- char* 和char[]的区别
- vs2015引用lib库
- 可视化自编码器训练结果
- ES5中数组的常用方法
- 欢迎使用CSDN-markdown编辑器
- 1044. Shopping in Mars (25)