肯德基网站开发,网站建设 源码,网站设计协议,珠海网站制作系统给你一个 m 行 n 列的矩阵 matrix #xff0c;请按照 顺时针螺旋顺序 #xff0c;返回矩阵中的所有元素 一看到这个大家有没有想到 就是一个螺旋形状#xff0c;那这道题我们应该怎么解决#xff1f; 我们先来仔细的看#xff0c;它这种螺旋形状的遍历是先【右-下-左-上】… 给你一个 m 行 n 列的矩阵 matrix 请按照 顺时针螺旋顺序 返回矩阵中的所有元素 一看到这个大家有没有想到 就是一个螺旋形状那这道题我们应该怎么解决 我们先来仔细的看它这种螺旋形状的遍历是先【右-下-左-上】所以我们可以先设置4个变量去控制我们所需要遍历形状的边界 int mmatrix.length;int nmatrix[0].length;//上下左右进行遍历int up0;int downm-1;int left0;int rightn-1;
那么循环结束的条件的是什么呢 我们是要将目标数组中的元素按照螺旋的规则加入一个list集合中那么循环的条件是不是就是我们集合list中的元素小于目标数组中的元素时就可以执行遍历上文易得数组中每一个小数组的长度为n数组中的有m个小数组数组中的元素我们是不是可以用数组的个数*每个数组的长度
while(list.size()m*n){}
先进行上层的从左向右遍历 //将上层的元素从左往右开始遍历//遍历的条件是最上层不能大于最下层if(updown){//从左向右for(int ileft;iright;i){list.add(matrix[up][i]);}//上边界下移up;}
再从最后一列从上往下遍历
//将最后一列的元素从上往下开始遍历if(leftright){//从上到下for(int iup;idown;i){list.add(matrix[i][right]);}//往左移一列right--;}
最后一层从右往左遍历
//将最后一行从右往左遍历if(updown){for(int iright;ileft;i--){list.add(matrix[down][i]);}down--;}
第一列从下自上遍历 //将第一列进行从小往上进行遍历if(leftright){for(int idown;iup;i--){list.add(matrix[i][left]);}left;}