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;
    }
};
复制代码

总结:

注意边界条件的判定。

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


相关推荐
凉茶钱5 分钟前
list:哨兵节点,const_iterator 和 const iterator的区别与迭代器失效
数据结构·c++·list
沫璃染墨15 分钟前
从零入门计算机网络系列(六):TCP套接字编程实战——从listen监听到客户端与服务器通信
linux·服务器·c++·tcp/ip·计算机网络·tcp
努力实干1 小时前
C++ 面向对象与工程架构
开发语言·c++·架构
代钦塔拉1 小时前
【C++/Qt 进阶】设计模式系列(6):桥接模式——把“两个独立变化的维度“拆开
c++·qt·设计模式
青少儿编程课堂1 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C/C++考级:任意进制互转与大数多进制加法解析
c++·python·算法·bfs·信息学竞赛
Shadow(⊙o⊙)1 小时前
仿muduo实现高并发服务器——EPOLL设置与移除Poller.hpp管理Channel
运维·服务器·c++
闻缺陷则喜何志丹1 小时前
【C++特性及类库】多线程
开发语言·c++·多线程·语言特性·系统库
多弗朗皮卡丘1 小时前
C++ 哈希(下)
c++·算法·哈希算法
dtq04242 小时前
C++3 - 分支语句if和string变量
开发语言·c++·学习