zoukankan      html  css  js  c++  java
  • Leetcode 59. 螺旋矩阵 II

    地址 https://leetcode-cn.com/problems/spiral-matrix-ii/

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

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

    解法
    使用
    int addx[4] = { 0,1,0,-1 };
    int addy[4] = { 1,0,-1,0 };
    标记 二维数组的变化方向 右下左上变化
    然后依次填充数字,如果当前方向延伸的坐标不在矩阵内或者已经被填充数字,则循环切换方向

    class Solution {
    public:
    	vector<vector<int>> ans;
    	int addx[4] = { 0,1,0,-1 };
    	int addy[4] = { 1,0,-1,0 };
    	int len = 0;
    	void Fill(int x, int y, int direct, int filln) {
    		ans[x][y] = filln; filln++;
    
    		for (int i = 0; i < 4; i++) {
    			int newdirect = (direct + i) % 4;
    			int newx = x + addx[newdirect];
    			int newy = y + addy[newdirect];
    			if (newx >= 0 && newx < len && newy >= 0 && newy < len && ans[newx][newy] ==0) {
    				Fill(newx, newy, newdirect, filln);
    				break;
    			}
    		}
    
    		return;
    	}
    
    	vector<vector<int>> generateMatrix(int n) {
    		len = n;
    		ans = vector<vector<int>>(n, vector<int>(n));
    		Fill(0, 0, 0, 1);
    		return ans;
    	}
    };
    
    

    我的视频题解空间

    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    1、怎么通过postman创建mock服务?
    13、使用正则表达式完成添加投资项目接口
    12、登录接口实战
    11、简历编写
    下载HTMLTestRunner 地址
    selenium (二)
    python 自动化测试
    Linux 安装MySQL流程
    文件 open 方法
    面向对象知识总结
  • 原文地址:https://www.cnblogs.com/itdef/p/14616691.html
Copyright © 2011-2022 走看看