import java.util.Arrays;

/**
* Source : https://oj.leetcode.com/problems/spiral-matrix/
*
* Created by lverpeng on 2017/7/19.
*
* Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
*
* For example,
* Given the following matrix:
*
* [
* [ 1, 2, 3 ],
* [ 4, 5, 6 ],
* [ 7, 8, 9 ]
* ]
*
* You should return [1,2,3,6,9,8,7,4,5].
*
*/
public class SpiralMatrix { /**
* 主要是边界问题
*
* @param matrix
* @return
*/
public int[] join (int[][] matrix) {
if (matrix.length <= 0) {
return new int[]{};
}
int m = matrix.length;
int n = matrix[0].length;
int[] result = new int[m * n];
int row = 0;
int col = 0;
int index = 0;
for (; row < (m + 1) / 2 && col < (n + 1) / 2; row ++, col ++) {
for (int i = col; i < n - col; i++) {
result[index++] = matrix[row][i];
}
for (int i = row + 1; i < m - row; i++) {
result[index++] = matrix[i][n - col - 1];
}
for (int i = n - col - 2; m - row - 1 > row && i >= col; i--) {
result[index++] = matrix[m - row - 1][i];
}
for (int i = m - row - 2; n - col - 1 > col && i > row; i--) {
result[index++] = matrix[i][col];
}
} return result;
} public static void main(String[] args) {
SpiralMatrix spiralMatrix = new SpiralMatrix();
int[][] matrix = new int[][]{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int[][] matrix1 = new int[][]{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
{10, 11, 12}
};
int[][] matrix2 = new int[][]{
{1, 2, 3},
{4, 5, 6}
};
int[][] matrix3 = new int[][]{
{1, 2, 3}
};
int[][] matrix4 = new int[][]{
{1},
{4},
{5}
}; System.out.println(Arrays.toString(spiralMatrix.join(matrix)));
System.out.println(Arrays.toString(spiralMatrix.join(matrix1)));
System.out.println(Arrays.toString(spiralMatrix.join(matrix2)));
System.out.println(Arrays.toString(spiralMatrix.join(matrix3)));
System.out.println(Arrays.toString(spiralMatrix.join(matrix4)));
}
}

最新文章

  1. javascript跨域、iframe跨域访问
  2. Webpack使用教程六(Plugins)
  3. (菜鸟要飞系列)一,基于Asp.Net MVC5的后台管理系统(前言)
  4. HTML5每日一练之input新增加的六种时间类型应用
  5. XML 文档解析操作
  6. rhel7.2 yum
  7. K-means算法简介
  8. vue.js2.0新手笔记(一)——安装
  9. VBA.NET 系统可行性分析模板
  10. eclipes快捷键
  11. __x__(26)0907第四天__文档流_网页最底层
  12. Java框架spring 学习笔记(十五):操作MySQL数据库
  13. vuex的学习例子
  14. (转)linux用户态和内核态理解
  15. (笔记)Mysql命令create:创建数据库
  16. 常见C语言编译错误解析【转】
  17. English trip -- VC(情景课) 7 D Reading 阅读练习
  18. 正则表达式基础-&gt;
  19. java 数组基础学习(一维二维数组)
  20. Tutorial 7: Schemas &amp; client libraries

热门文章

  1. 前后台分离开发时遇到循环引用问题&quot;$ref&quot;
  2. Qt HID USB通讯错误
  3. 流量控制与RateLimiter
  4. RK3288 uboot启动流程
  5. java开发师笔试面试每日8题(1)
  6. mpvue 初体验之改写车标速查小程序
  7. JUnit学习笔记-0-JUnit启动类
  8. js基础知识:字面量 关键字和保留字
  9. 运行纯PHP程序的时候,不应该加&quot;?&gt;&quot;结束语
  10. c语言宏开关 使用