博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode:59. 螺旋矩阵 II
阅读量:3709 次
发布时间:2019-05-21

本文共 871 字,大约阅读时间需要 2 分钟。

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

示例:

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

解题思路:

模拟题,将初始位置设置成(0,-1)。初始的移动量R=n,D=n-1,L=n-1,U=n-2。每走完一圈R,D,L,U都减2。当移动的方向没有移动量时,退出循环。

C++代码
class Solution{
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> res(n, vector<int>(n, 0));
        pair<int, int> pos(0, -1);
        int R = n, D = n - 1, L = n - 1, U = n - 2;
        int num = 1, i;
        while (1) {
            if (R == 0) break;
            for (i = 1; i <= R; i++) {
                pos.second++;
                res[pos.first][pos.second] = num;
                num++;
            }
            if (D == 0) break;
            for (i = 1; i <= D; i++) {
                pos.first++;
                res[pos.first][pos.second] = num;
                num++;
            }
            if (L == 0) break;
            for (i = 1; i <= D; i++) {
                pos.second--;
                res[pos.first][pos.second] = num;
                num++;
            }
            if (U == 0) break;
            for (i = 1; i <= D; i++) {
                pos.first--;
                res[pos.first][pos.second] = num;
                num++;
            }
            R -= 2; D -= 2; U -= 2; L -= 2;
        }
        return res;
    }
};

 

转载地址:http://nrfjn.baihongyu.com/

你可能感兴趣的文章
数据结构与算法
查看>>
C/C++总结
查看>>
计算机组成原理总结
查看>>
1.3 QT界面美化
查看>>
2 QT数据传输(MVC)
查看>>
3.QT逻辑交互(信号槽)
查看>>
4 QT功能模块
查看>>
(4)功能模块(文件)
查看>>
@Component 和 @Bean 的区别
查看>>
jmeter模拟不同ip对接口进行请求访问
查看>>
javaWeb从入门到放弃——Http基础知识
查看>>
依赖注入
查看>>
Springboot 自动装配原理2
查看>>
Springboot 自动装配原理1
查看>>
Springboot 自动装配流程图详解
查看>>
Springboot 整合mybatis
查看>>
Springboot+mongodb本地环境正常,生产环境报错{java.lang.NoClassDefFoundError: jdk/net/ExtendedSocketOptions}
查看>>
你真的知道get方法与post方法的区别吗?论get方法与post方法上传下载文件的区别
查看>>
swagger配置及升级版swagger-bootstrap-ui配置+访问账号密码登录限制
查看>>
网易云Api,轻松获取音乐数据
查看>>