1.螺旋矩阵
给定一个包含m×n个元素的矩阵(m行,n列),请按照顺时针螺旋顺序,返回矩阵中所有元素。
思路:矩阵中有多少个圈,每一圈按顺时针方向输出
做的我想哭了,注意最后逆向判断的时候该层是否只有一行或这一列,以及min那里加!括!号!
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> res;
int rows = matrix.size();
if(rows == 0)
{
return res;
}
int lines = matrix[0].size();
int k = 0;
for(k; k < (min(rows,lines) + 1) / 2; k++) //计数第几圈
{
int i = k;
int j = k;
for(j; j < lines - k; j++) //横向添加第一行的元素
{
res.push_back(matrix[i][j]);
}
j--;
for(i = i + 1; i < rows - k; i++) //纵向添加最后一列元素
{
res.push_back(matrix[i][j]);
}
i--;
for(j -= 1; j >= k && rows - 1 - k != k; j--) //横向添加最后一行元素
{
res.push_back(matrix[i][j]);
}
j++;
for(i -= 1; i > k && lines - k - 1 != k; i--) //纵向添加第一列元素
{
res.push_back(matrix[i][j]);
}
}
return res;
}