文档章节

螺旋矩阵打印java实现

writeademo
 writeademo
发布于 2017/08/29 15:45
字数 367
阅读 440
收藏 0

 

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 ]
]

 

 

打印值:1236

题目意思:

给定一个m*n的矩阵,输出所有元素的螺旋顺序。

解题思路:

使用计算输出的方法,先处理上面一行,再处理右面一行,再处理下面一行,再处理左边一i列,这是一个处理流程,一直这样操作,直到所有的元素都处理完成。

实现过程

public List<Integer> spiralOrder(int[][] matrix) {
  List<Integer> result = new ArrayList<>(50);
  if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
   return result;
  }

  // 只有一行的情况
  if (matrix.length == 1) {
   for (int i : matrix[0]) {
    result.add(i);
   }
   return result;
  }
  if (matrix[0].length == 1) {
   for (int i = 0; i < matrix.length; i++) {
    result.add(matrix[i][0]);
   }
   return result;
  }

  // 计算有多少圈
  int row = matrix.length;
  int col = matrix[0].length;
  int cycle = row < col ? row : col;
  cycle = (cycle + 1) / 2;
  int round = 0;
  int left = 0;
  int right = matrix[0].length - 1;
  int top = 0;
  int down = matrix.length - 1;
  // 总元素个数
  int total = col * row;
  int count = 0;
  while (round < cycle) {
   // 上面一行
   for (int i = left; i <= right && count < total; i++) {
    count++;
    result.add(matrix[round][i]);
   }

   top++;
   // 右边一列
   for (int i = top; i <= down && count < total; i++) {
    count++;
    result.add(matrix[i][col - round - 1]);

   }
   right--;

   // 底下一行
   for (int i = right; i >= left && count < total; i--) {
    count++;
    result.add(matrix[row - round - 1][i]);
   }
   down--;
   // 左边一列
   for (int i = down; i >= top && count < total; i--) {
    count++;
    result.add(matrix[i][round]);
   }
   left++;
   round++;
  }
  return result;

 }

 

参考文章:欢迎转载,转载请注明出处【http://blog.csdn.net/derrantcm/article/details/47120491

 

 

 

© 著作权归作者所有

writeademo
粉丝 26
博文 679
码字总数 255284
作品 0
东城
私信 提问
LeetCode:Spiral Matrix - 螺旋输出矩阵中的元素

1、题目名称 Spiral Matrix(螺旋输出矩阵中的元素) 2、题目地址 https://leetcode.com/problems/spiral-matrix/ 3、题目内容 英文:Given a matrix of m x n elements (m rows, n columns...

北风其凉
2015/11/02
956
0
LeetCode:Spiral Matrix II - 将元素1-n^2以螺旋序填充到矩阵

1、题目名称 Spiral Matrix(螺旋输出矩阵中的元素) 2、题目地址 https://leetcode.com/problems/spiral-matrix-ii/ 3、题目内容 英文:Given an integer n, generate a square matrix fill...

北风其凉
2015/11/03
404
0
求Java版螺旋矩阵算法

求Java版螺旋矩阵算法,函数声明: 要求: 最短,最简洁,最佳答案加20分。

悠悠然然
2015/04/03
420
3
悠然乱弹:螺旋矩阵和蛇型矩阵的悠然版实现

螺旋矩阵和蛇型矩阵,是两个比较有趣的矩阵,有许多的公司面试题中有出现,这两个题的答案也有许多种,简单问一下度娘,就各自有N种实现,来源也非常丰富,比如CSDN、ITEYE、等等,当然也包括...

悠悠然然
2015/04/04
3K
17
《数据结构与算法系列》合集整理

《数据结构与算法系列》合集整理 整理来自博客园skywang12345,以下摘自作者介绍: “最近抽空整理了"数据结构和算法"的相关文章。在整理过程中,对于每种数据结构和算法分别给出"C"、"C++"...

kaixin_code
2018/12/01
186
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
36分钟前
3
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
47分钟前
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
56分钟前
6
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
5
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部