题目:输入一个矩阵(行列相等的二维矩阵),按照从外向里以顺时针的顺序依次打印出每一个数字,以逗号隔开。
输入描述:二维数组对应字符串.[[1,2,3],[4,5,6],[7,8,9]]
输出描述:二维数组对应的一组数字.1,2,3,6,9,8,7,4,5
思路:螺旋访问数组是常见的一类题目,还可以变形为螺旋生成n维数组。这类题目思路都是相同的,主要是控制访问每行每列的边界。
考虑:用两个变量xnum,ynum分别对访问列方向、行方向上前进步数的限制。ynum初始值为列数, xnum初始值为行数-1。打印具体过程如下:
当行列方向可前进步数均不为0并且输出列表长度小于原矩阵元素个数时,循环以下四个方向:
→:行方向的打印,坐标y值步进,可前进步数为yum。
↓:列方向的打印,坐标x值步进,可前进步数为xnum。
走过半圈之后,ynum和xnum都减1,这是很显然的。
←:行方向的打印,坐标y值后退,为了保证与→ 方向数据不重合,需要加上xnum>=0的判断,这个判断的意思是上边界与下边界之间有间隔,因为如果此时只剩一行数据