螺旋矩阵(回型矩阵)_平头哥阿威的博客-程序员秘密

技术标签: 剑指offer  

54.螺旋矩阵

给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
示例 1:

输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]
示例 2:

输入:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
输出: [1,2,3,4,8,12,11,10,9,5,6,7]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/spiral-matrix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
    
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
    
        if(matrix.empty() || matrix[0].empty()) return {
    };
        vector<int> res;
        int m = matrix.size(), n = matrix[0].size();
        // 确定上下左右四条边的位置
        int up = 0, down = m - 1, left = 0, right = n - 1;
        while (true)
        {
     
            for (int i = left; i <= right; i++) res.push_back(matrix[up][i]);
            if (++up > down) break;
            for (int i = up; i <= down; i++) res.push_back(matrix[i][right]);
            if (--right < left) break;
            for (int i = right; i >= left; i--) res.push_back(matrix[down][i]);
            if (--down < up) break;
            for (int i = down; i >= up; i--) res.push_back(matrix[i][left]);
            if (++left > right) break;
        }
        return res;
    }
};

59.螺旋矩阵II

给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

示例:

输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/spiral-matrix-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
    
public:
    vector<vector<int>> generateMatrix(int n) {
    
        vector<vector<int>> ret;
        ret.resize(n);
        for(int i=0;i<n;i++)
            ret[i].resize(n);
        
        int x=1;
        int left=0,right=n-1,up=0,down=n-1;
        while(true)
        {
    
            for(int i=left;i<=right;i++)
                ret[up][i]=x++;
            if(++up>down)   break;
            
            for(int i=up;i<=down;i++)
                ret[i][right]=x++;
            if(--right<left)    break;
            
            for(int i=right;i>=left;i--)
                ret[down][i]=x++;
            if(--down<up)      break;
            
            for(int i=down;i>=up;i--)
                ret[i][left]=x++;
            if(++left>right)    break;
        }
        return ret;
    }
};
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Vickers_xiaowei/article/details/102531582

智能推荐

Python Folium地图无法显示/地图空白_cannonfodder9527的博客-程序员秘密

排查了一下1无法访问cdn.jsdelivr.net去Github看确实中国地区有无法访问的issue官方给出了回答GitHub - PipecraftNet/jsdelivr-auto-fallback: 修复 cdn.jsdelivr.net 无法访问的问题就是要在网页里进行替换folium的网页是自动生成的所以生成后我们完成替换代码如下m.save('maptest.html') #maptest.html改成你的文件search_text = "cdn....

OllyDbg 使用笔记 (十三)_ollydbg kiiltimer_billvsme的博客-程序员秘密

OllyDbg 使用笔记 (十三)参考书:《加密与解密》视频:小甲鱼 解密系列 视频方法一:内嵌补丁 加载程序,按F9运行,点击Enter Reg.Code 输入name,key等,先不要按OK ,到OD中 按Ctrl+N打开输入输出表,搜索KillTimer,设置断点。再点击注册窗口的OK,我们可以看见: (也可以通搜索注册失败时弹出窗口中的“The registration code seems to be not valid” 来找到下面代码)

如何学会阅读源码,看这篇就够了!_androidstarjack的博客-程序员秘密

作者 | youzhibing来源 | cnblogs.com/youzhibing/p/9553752.html读源码的经历刚参加工作那会,没想过去读源码,更没想过去改框架的源码;总想...

Leetcode #107 二叉树的层次遍历 II_「已注销」的博客-程序员秘密

给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]]来源:力扣(LeetCode)链接:http...

部署Office Online Server服务实现在线编辑预览文件_officeonline局域网版_成长的小亮亮的博客-程序员秘密

参考博主:https://blog.csdn.net/jiaqu2177/article/details/81945692一:准备工作:1、两台Windows机器我用的版本是【cn_windows_server_2012_r2_with_update_x64_dvd_4048415.iso】2、Office Online Server安装包:cn_office_online_serve...

随便推点

2021SC@SDUSC rsa分析_rsa_padding_check_pkcs1_type_2_m0_54743939的博客-程序员秘密

[email protected] RSA介绍RSA算法是一个广泛使用的公钥算法。其密钥包括公钥和私钥。它能用于数字签名、身份认证以及密钥交换。RSA密钥长度一般使用1024位或者更高。RSA密钥信息主要包括[1]: n : 模数 e : 公钥指数 d : 私钥指数 p : 最初的大素数 q : 最初的大素数 dmp1 : e*dmp1 = 1 (mod (p-1)) dmq1 : e*d

Vue2入门-程序员秘密

前端三大框架之一,最流行的前端框架之一

10章 RxJava源码分析_许英俊潇洒的博客-程序员秘密

本篇文章已授权微信公众号 YYGeeker 独家发布转载请标明出处CSDN学院课程地址RxJava2从入门到精通-初级篇:https://edu.csdn.net/course/detail/10036RxJava2从入门到精通-中级篇:https://edu.csdn.net/course/detail/10037RxJava2从入门到精通-进阶篇:https://edu.csdn....

JMeter安装测试(netty websocket压力测试)_jmeter测试netty_忧郁之风的博客-程序员秘密

JMeter安装由于Jmeter是基于java开发,首先需要下载安装JDK (省略)http://jmeter.apache.org/download_jmeter.cgi下载后运行jmeter.bat即可测试实例JMeter脚本编写1。添加线程组线程组参数详解:1. 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户...

repo init 出现 line 79_一条不更新的懒狗的博客-程序员秘密

原因就是用了系统的python2.7正确应该用3.x版本sudo ln -s /usr/bin/python3.5 /usr/bin/python.建立软连接 将python指向python3.x或者是删掉2.7sudo rm /usr/bin/pythonsudo ln -s /usr/bin/python3 /usr/bin/python

推荐文章

热门文章

相关标签