面试 15:顺时针从外往里打印数字
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印每一个数字。例如输入: {{1,2,3}, {4,5,6}, {7,8,9}} 则依次打印数字为 1、2、3、6、9、8、7、4、5
78.jpg
这是昨天最后给大家留下的题目,相信大家也有去思考如何处理这道题目了。
初看这个题目,比较容易理解,也无需牵扯到数据结构或者高级的算法,看起来问题比较简单,但实际上解决起来且并没有想象中的容易。
大家极有可能想到循环嵌套的方式,套用几个 for 循环就可以啦。

  • 首先打印第 1 行,然后第一个 for 循环从第一列打印到最后一列。
  • 到最后一列,开始向下打印,为了防止重复打印第一行最后一列的数字,所以应该从第二行开始打印;
  • 上面步骤 2 到底的时候,再在最后一行从倒数第二列开始往前打印一直到第一列;
  • 用步骤 3 到最后一行第一列的时候再往上打印,第一行第一列由于步骤 1 已经打印过,所以这次只需要从倒数第二行第一列开始打印到顺数第二行第一列即可;
  • 然后里面其实是一样的,不难看出里面其实就是对一个更小的矩阵重复上面的步骤 1 到步骤 4;
  • 由于之前说了一定注意边界值,所以我们再步骤 1 之前严格注意一下传入矩阵为 null 的情况。
思路想好了,所以开始下笔写起代码:

79.jpg
80.jpg

代码1.txt (1.34 KB, 下载次数: 0)