算法设计系列-07

题目

给定一个整形矩阵, 请按照转圈的方式进行打印

例如矩阵如下:

算法设计系列-07

则,打印结果为: 1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10

要求空间复杂度为O(1)

思路分析

第一反应, 将行号和列号变化的规律找到, 然后按照规律进行打印, 但是这种方式我没有采用, 并不是不能实现, 是可以实现的, 只是实现起来过于麻烦.

现在换一种思路, 如果, 我们已经有了左上角与右下角两个点, 那么这两个点就可以确定一个矩阵, 我们要打印这个矩阵的左上角顺时针转一圈的元素, 这个方法是很好实现的, 就像下图:

算法设计系列-07

一圈打印完后, 我们将这两个点向中间逼近, 继续打印, 哎, 这不就成了么!

转圈打印的函数实现如下:

算法设计系列-07

打印的函数有了, 那剩下的就是将两点逐渐向中心逼近了, 函数实现:

算法设计系列-07


分享到:


相關文章: