欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 艺术 > 力扣hot100——螺旋矩阵 超简单易懂的模拟搜索方法

力扣hot100——螺旋矩阵 超简单易懂的模拟搜索方法

2025/2/22 16:41:32 来源:https://blog.csdn.net/qq_46258829/article/details/145761372  浏览:    关键词:力扣hot100——螺旋矩阵 超简单易懂的模拟搜索方法

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

解法思路:

        // 模拟螺旋搜索设定四个边界//    left               right//  top |————————————————|//      |                |//      |                |// down |————————————————|// 从左往右搜索,搜索完后向下,上边界下移// 从上往下搜索,搜索完后向左,右边界左移// 从右往左搜索,搜索完后向上,下边界上移// 从下往上搜索,搜索完后向右,左边界右移
class Solution {
public:vector<int> spiralOrder(vector<vector<int>>& matrix) {// 模拟螺旋搜索设定四个边界//    left               right//  top |————————————————|//      |                |//      |                |// down |————————————————|// 从左往右搜索,搜索完后向下,上边界下移// 从上往下搜索,搜索完后向左,右边界左移// 从右往左搜索,搜索完后向上,下边界上移// 从下往上搜索,搜索完后向右,左边界右移vector<int> res;int left = 0, right = matrix[0].size(),top = 0, down = matrix.size();while(left < right && top < down){// 从左往右搜索,搜索完后向下,上边界下移动for(int i = left; i < right; i++){res.push_back(matrix[top][i]);  // 上边界行}++top;if(top >= down){ // 只有一行break;}// 从上往下搜索,搜索完后向左,右边界左移for(int i = top; i < down; i++){res.push_back(matrix[i][right-1]); // 外边界列}--right;if(left >= right){  // 只有一列break;}// 从右往左搜索,搜索完后向上,下边界上移for(int i = right-1; i>=left;i--){res.push_back(matrix[down-1][i]); // 下边界行加入}--down;if(top >= down){ // 遍历结束break;}// 从下往上搜索,搜索完后向右,左边界右移for(int i = down-1; i>=top;i--){res.push_back(matrix[i][left]);  // 左边界列}++left;if(left >= right){  // 遍历结束break;}}return res;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词