周末稍作修整,按心情挑几道题目做做,看到了岗位面试题集,就点进来了~
这道题,leetcode上刷过类似的,是 n 平方的 螺旋矩阵,从这道题目来看,我还是没能掌握该题型!!
思路: 回顾:leetcode 59 螺旋矩阵 给定 n * n 的矩阵,输出 顺时针的数组元素。解题的关键是 选择什么变量 作为循环的条件!!!答案:圈数,根据行列计算得到。由于是 方阵,因此,当出现 n%2 不为0时,不成圈,需要另外补值。
本题:最大的难点在于该矩阵为非方阵,因此圈数的计算以及多种补值的情况。
下图是对代码的注解,方便理解代码:
代码:
bool flag=true;
vector spiralOrder(vector>& matrix) {
int row=matrix.size();int col=matrix[0].size();
vectorresult;
if(row==1&&col==1)return {matrix[row-1][col-1]};
if(row==1||col==1)
{
int b=0;
if(row==1)
{
while(b y;j--)
result.push_back(matrix[i][j]);
for(;i>x;i--)
result.push_back(matrix[i][j]);
//一圈走完了。下一个起始结点
x++;y++;
offset=offset+2;//偏置
}
if(min(row,col)%2)
{
if(x==row-min(row,col)/2-1){
while(y
很绕,需要好好消化!!!



