题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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;
ArrayList<Integer> res = new ArrayList<>(); if(row == 0 && col == 0)
return res;
int left = 0, right = col - 1, top = 0, bottom = row - 1;
while(left <= right && top <= bottom){
//上:从左到右
for(int i=left; i<=right; i++)
res.add(matrix[top][i]);
//右:从上到下
for(int i=top+1; i<=bottom; i++)
res.add(matrix[i][right]);
//下:从右到左
if(top != bottom){
//防止单行情况
for(int i=right-1; i>=left; i--)
res.add(matrix[bottom][i]);
}
//左:从下到上
if(left != right){
//防止单列情况
for(int i=bottom-1; i>top; i--)
res.add(matrix[i][left]);
}
left++; right--; top++; bottom--;
}
return res;
}
}

最新文章

  1. Java继承
  2. TCP连接的建立和终止
  3. NSJSONSerialization(json序列化)
  4. 使用命令行工具运行Xcode 7 UI Tests
  5. Java中static的理解
  6. Space.js – HTML 驱动的页面 3D 滚动效果
  7. Phaser提供了Button对象简单的实现一个按钮
  8. SQL查询的几种方式
  9. 如何在redhat下安装办公软件(openoffice)
  10. 业界最有价值的 ASP.NET 博文汇总
  11. iOS 对视频抽帧。
  12. Strtus2 S2-045漏洞
  13. asp.net core系列 58 IS4 基于浏览器的JavaScript客户端应用程序
  14. ASCII Art ヾ(≧∇≦*)ゝ
  15. 从零开始学习PYTHON3讲义(二)把Python当做计算器
  16. 厉害了,Spring Cloud for Alibaba 来了!
  17. python中基本类型的连接组合和互相转换
  18. python恶俗古风诗自动生成器
  19. 【深度探索C++对象模型 | 02】构造函数语意学
  20. js数组内数字按大小排序实现函数

热门文章

  1. 基于Windows服务的聊天程序
  2. python3 datetime 时间格式相减 计算间隔
  3. Win Server 2012 配置运行 .net core 环境
  4. 4.AOP原理模拟
  5. impala 建表时报错,不支持中文
  6. SURF算法源代码OPENSURF分析
  7. 高性能Java科学与技术运算库Colt
  8. Django学习:创建第一个app
  9. STM32——CAN协议帧的标准格式和扩展格式与优先级的关系
  10. PHP面试题--基础