面试题目:给定一个矩阵,实现从中心位置逆时针输出(当时让我自己定方向,反正就是从中间开始走圈圈,这个题我就定逆时针来做了)
算法思想:
1、用二维数组存储矩阵
2、找到中心点,用indexi=Math.floor(row/2),indexj=Math.floor(col/2),找到中心点的索引
3、设一个count变量,用于计算每个方向需要走多少步,赋初值count=1;然后每走两个方向count++;
4、每个方向边界判断
这儿有几个坑:
1)、因为我们的每一个循环是走四个方向,所以如果当在中途就超过了我们的循环条件,result.length>len,
那么循环还会继续执行,所以我设置了每一个方向前判断一下,达到了就退出循环
2)、当我们单纯的控制indexi和indexj不超出自己的边界,是不可行的,因为当row和col相距太大时,就不容易取到剩下的值
所以,就算indexi和indexj超出了范围,我们可以不push到result,但是索引还是作相应的增加,当然这时候你在nums中也找不到,会报错。
5、把结果存入result数组,一个一个的push进去的,也就是题目要求的顺序了
在代码中,我是自己在浏览器中手动设置矩阵:
<div id="container">
<label for="conten">向二维数组添加内容</label>
<input type="text" name="content" id="" v-model="num">
<button @click="addNum" v-show="flag">添加</button>
<button &