LCR 146.螺旋遍历数组

​​题目来源:

leetcode题目,网址:LCR 146. 螺旋遍历二维数组 - 力扣(LeetCode)

解题思路:

按要求遍历即可。

解题代码:

复制代码
class Solution {
public:
    vector<int> spiralArray(vector<vector<int>>& array) {
        vector<int> res;
        if(array.size()==0){
            return res;
        }
        vector<vector<int>> dir={{0,1,0,-1},{1,0,-1,0}};
        int size=min(array.size(),array[0].size());
        int cir=size%2==0?size/2:size/2+1;
        for(int i=0;i<cir;i++){
            int x=i;
            int y=i;
            res.push_back(array[x][y]);
            bool right_move=false;
            bool down_move=false;
            cout<<i<<endl;
            for(int j=0;j<array[0].size()-i*2-1;j++){
                right_move=true;
                x+=dir[0][0];
                y+=dir[1][0];
                res.push_back(array[x][y]);
            }
            for(int j=0;j<array.size()-i*2-1;j++){
                down_move=true;
                x+=dir[0][1];
                y+=dir[1][1];
                res.push_back(array[x][y]);
            }
            if(down_move){
                for(int j=0;j<array[0].size()-i*2-1;j++){
                    x+=dir[0][2];
                    y+=dir[1][2];
                    res.push_back(array[x][y]);
                }
            }
            if(right_move){
                for(int j=0;j<(int)(array.size())-i*2-2;j++){
                    x+=dir[0][3];
                    y+=dir[1][3];
                    res.push_back(array[x][y]);
                }
            }
        }
        return res;
    }
};
复制代码

总结:

注意边界条件的判定。

官方题解给出了模拟和按层遍历两种解法。模拟直接确定结果数组中的元素在二维数组中的位置。按层遍历直接设立上下左右的边界。


相关推荐
阿昭L11 小时前
c++中获取随机数
开发语言·c++
3壹11 小时前
数据结构精讲:栈与队列实战指南
c语言·开发语言·数据结构·c++·算法
aaaweiaaaaaa12 小时前
c++基础学习(学习蓝桥杯 ros2有C基础可看)
c++·学习·蓝桥杯·lambda·ros2·智能指针·c++类
一拳一个呆瓜12 小时前
【MFC】对话框属性:字体 (Font Name) 和 大小 (Font Size)
c++·mfc
郝学胜-神的一滴12 小时前
基于OpenGL封装摄像机类:视图矩阵与透视矩阵的实现
c++·qt·线性代数·矩阵·游戏引擎·图形渲染
啊?啊?12 小时前
14 C++ STL 容器实战:stack/list 模拟实现指南 + priority_queue 用法及避坑技巧
c++·
汉克老师13 小时前
第十四届蓝桥杯青少组C++选拔赛[2023.2.12]第二部分编程题(4、最大空白区)
c++·算法·蓝桥杯·蓝桥杯c++·c++蓝桥杯
共享家952713 小时前
优先搜索(DFS)实战
算法·leetcode·深度优先
羚羊角uou13 小时前
【Linux】匿名管道和进程池
linux·c++·算法
曙曙学编程14 小时前
stm32——独立看门狗,RTC
c语言·c++·stm32·单片机·嵌入式硬件