题目大意:给你一个矩形,然后要你将之螺旋输出。从[0,0]开始。
题目链接:Spiral Matrix

看上去是一个挺简单的题目,以前也做过类似的,不过当时做的时候规定是正方形而已。没有好好的想就直接code,然后发现各种bug。慢慢调了好久才最后通过,好久没写算法题了,还是生疏了。

大致思路如下:首先我们要判断是不是空的矩形,空矩形直接返回一个空的vector即可,如果不是空矩形的话,那么我们可以设多个变量,left,right,top,button分别表示当前矩形还未被输出的部分的最左,最右,最上,最下。然后我们在原始矩阵中进行螺旋访问,输出每一个元素。可以把这个螺旋访问看成是一层一层的剖洋葱,一层一层的来,每一层先处理最上面的一行,然后是最右边的一列,接下来是最下面的一行,最后是最左边的一列。然后在途中不断更新left,right,top和button四个变量值即可。

到这里已经大致OK了,不过还是有问题,因为不是正方形,可能导致某些元素输出多次,这样的话就不行了,这里可以对输出的元素进行计数,如果已经全部输出完毕,那么就直接退出就行了。

代码在这里

Comments