Java for You 数据结构 剑指Offer之二十–顺时针打印矩阵

剑指Offer之二十–顺时针打印矩阵

题目描述

  • 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
  • 例如,如果输入如下矩阵:
  • 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

解析

  • 因为每打印一圈都会改变起始坐标,所以需要先确定矩阵大小与起始坐标的关系

  • 比如4阶矩阵,第一圈起始坐标为(0,0),第二圈起始坐标为(1,1),打印两圈之后就结束了
  • 比如一个5阶矩阵,前两圈同4阶,第三圈为(2,2),而且只打印了一个数。
  • 会发现,只要起始坐标的两倍小于阶数,就会一直转圈打印
  • 所以停止转圈打印的条件就是起始坐标的2倍大于或者等于阶数

  • 然后考虑每一圈的打印方法

  • 第一步:从左到右打印一行
  • 第二步:从上到下打印一列(需满足终止行号大于起始行号)
  • 第三步:从右到左打印一列(需满足终止行号大于起始行号的同时,终止列号大于起始列号)
  • 第四步:从下到上打印一列(需满足终止行号比起始行号大2,终止列号大于起始列号)
  • 注意:打印矩阵最里面一圈可能只需要三步、两步、甚至一步

代码实现

本文由 java4u.cn 发布,可自由转载、引用,但需署名作者且注明文章出处(作者:白色蜗牛,出处:java4u.cn)。如转载至微信公众号,请在文末添加作者公众号二维码。 https://java4u.cn/algorithms/3327.html

作者: 蜗牛

剑指Offer之十九-二叉树的镜像

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

公众号:蜗牛互联网

在线咨询: QQ交谈

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部