题解 | #顺时针打印矩阵#
顺时针打印矩阵
https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a
// 定好上下左右边界值,模仿绕圈圈,注意更新边界值 // 记得上左到上右,搞完更新的是上值 // while时候注意要带等号,对于行列数目不等时,需要等号 // 思路比较直接,画个圈圈感受一下就行了 class Solution { public: vector<int> printMatrix(vector<vector<int> > matrix) { int up, down, left, right; up = 0; down = matrix.size() - 1; left = 0; right = matrix[0].size()-1; vector<int> res; if(right < 0) return res; while (left <= right && up <= down) { // 对于行为3,列为5,这时候需要 = 了 // 从上左到上右 for(int i = left; i <= right; ++i) { res.push_back(matrix[left][i]); } up++; if(up > down) break; // 从右上到右下 for(int i = up; i <= down; ++i) { res.push_back(matrix[i][right]); } right--; if(left > right) break; // 从下右到下左 for(int i = right; i >= left; --i) { res.push_back(matrix[down][i]); } down--; if(up > down) break; // 从左下到左上 for(int i = down; i >= up; --i) { res.push_back(matrix[i][left]); } left++; if(left > right) break; //std::cout << left << " " << right << " " << up << " " << down << endl; } return res; } };
挤挤刷刷! 文章被收录于专栏
记录coding过程