顺时针打印矩阵
来源:互联网 发布:mac怎么换壁纸 编辑:程序博客网 时间:2024/05/23 16: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.
给定矩阵:
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 Solution {
public ArrayList<Integer> printMatrix(int[][] matrix) {
ArrayList<Integer> list = new ArrayList<Integer>();
if (matrix == null) {
return list;
}
int rows = matrix.length; // 行数
int columns = matrix[0].length; // 列数
// 每次从(0,0) (1,1) (2,2)开始的
int times = 0; // 第几次循环
while(rows > times * 2 && columns > times * 2){
int numX = columns - 1 - times;
int numY = rows - 1 - times;
// 打印第一横行
for (int i = times; i <= numX; i++) {
System.out.print(matrix[times][i] + " ");
list.add(matrix[times][i]);
}
if (times < numY) {
// 打印第一列
for (int i = times + 1; i <= numY; i++) {
System.out.print(matrix[i][numX] + " ");
list.add(matrix[i][numX]);
}
}
if (times < numX && times < numY) {
// 打印最下面的一行
for (int i = numX - 1; i >= times; i--) {
System.out.print(matrix[numY][i] + " ");
list.add(matrix[numY][i]);
}
}
if (times < numX && times < numY - 1) {
// 打印最左边的一列
for (int i = numY - 1; i >= times + 1; i--) {
System.out.print(matrix[i][times] + " ");
list.add(matrix[i][times]);
}
}
times++;
}
return list;
}
public static void main(String[] args) {
Solution s = new Solution();
// int[][] num = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12
// },{13, 14, 15, 16 } };
int[][] num = { {1, 2}, {3, 4}, {5, 6}, {7, 8}, {9, 10}};
ArrayList<Integer> list = s.printMatrix(num);
System.out.println(list);
}
}
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 矩阵顺时针打印
- 顺时针打印矩阵
- 顺时针打印矩阵[算法]
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 【干货分享】流程DEMO-制度发文和干部任免
- java中Date的转换
- 1095. Cars on Campus (30)解题报告
- SpingMVC ModelAndView, Model,Control以及参数传递
- java的Arrays工具类
- 顺时针打印矩阵
- [QT笔记]在Qt程序中使用Windows API读取ini设置信息
- Complete Guide to Parameter Tuning in Gradient Boosting (GBM) in Python
- chrome开发者工具的使用
- 另一种遍历Map的方式: Map.Entry 和 Map.entrySet()
- Android 开发例子(image view list view)
- Xamarin.iOS+MvvmCross 微博客户端App(开源)
- node-redis模块需要注意的事项
- LayaAir引擎学习日志2----LayaAir引擎在Windows下安装