059. Spiral Matrix II
题目链接:https://leetcode.com/problems/spiral-matrix-ii/description/
Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
Example:
- Input: 3
- Output:
- [
- [ 1, 2, 3 ],
- [ 8, 9, 4 ],
- [ 7, 6, 5 ]
- ]
思路:
- 本题和54.Spiral Matrix思路上基本一致,只不过本题是要求在矩阵中填入数据,但两者对矩阵的遍历方式一样;
- 遍历矩阵的思路可以查看这篇博文:54.Spiral Matrix
注意:这种方式定义容器vector<vector<int>> matrix(n * n); 容器元素的值是未定义的随机值,编译会导致:EXC_BAD_ACCESS (code=1, address=0x0)错误。
处理方式有两种:
- // 第一种方式:
- vector<vector<int>> matrix(n, vector<int>(n));
- // 第二种方式:
- vector<vector<int> > matrix(n);
- for ( int i = ; i < n ; i++ )
- matrix[i].resize(n);
这样就能保证matrix中的每个元素初值为:0;
编码如下:
- class Solution {
- public:
- vector<vector<int>> generateMatrix(int n) {
- // vector<vector<int> > matrix(n);
- // for ( int i = 0 ; i < n ; i++ )
- // matrix[i].resize(n);
- vector<vector<int>> matrix(n, vector<int>(n));
- int loop = n / + n % ;
- int i = , j = ; // matrix[i][j]
- int num = ;
- while (loop-- > )
- {
- int left_Up = , right_Up = n - j, right_Down = n - i, left_Down = ;
- // 从左上角 -> 右上角 (i, left_Up) -> (i, right_Up) == (i, left_Up)
- for (left_Up = j; left_Up < right_Up && num <= n * n; ++left_Up)
- {
- matrix[i][left_Up] = num++;
- }
- left_Up--;
- // 从右上角 -> 右下角 (right_Up = i+1, left_Up) -> (right_Down, left_Up) == (right_Up, left_Up)
- for (right_Up = i + ; right_Up < right_Down && num <= n * n; ++right_Up)
- {
- matrix[right_Up][left_Up] = num++;
- }
- right_Up--;
- // 从右下角 -> 左下角 (right_Up, right_Down = left_Up - 1) -> (right_Up, j) == (right_Up, right_Down)
- for (right_Down = left_Up - ; right_Down >= j && num <= n * n; --right_Down)
- {
- matrix[right_Up][right_Down] = num++;
- }
- right_Down++;
- // 从左下角 -> 左上角 (left_Up = right_Up - 1, right_Down) -> (i++, right_Down) == (left_Up, right_Down)
- i++;
- for (left_Up = right_Up - ; left_Up >= i && num <= n * n; --left_Up)
- {
- matrix[left_Up][right_Down] = num++;
- }
- j++;
- }
- return matrix;
- }
- };
059. Spiral Matrix II的更多相关文章
- Java for LeetCode 059 Spiral Matrix II
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...
- 059 Spiral Matrix II 旋转打印矩阵 II
给出正整数 n,生成正方形矩阵,矩阵元素为 1 到 n2 ,元素按顺时针顺序螺旋排列.例如,给定正整数 n = 3,应返回如下矩阵:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6 ...
- 【leetcode】Spiral Matrix II
Spiral Matrix II Given an integer n, generate a square matrix filled with elements from 1 to n2 in s ...
- 59. Spiral Matrix && Spiral Matrix II
Spiral Matrix Given a matrix of m x n elements (m rows, n columns), return all elements of the matri ...
- Spiral Matrix II
Spiral Matrix II Given an integer n, generate a square matrix filled with elements from 1 to n2 in s ...
- leetcode 54. Spiral Matrix 、59. Spiral Matrix II
54题是把二维数组安卓螺旋的顺序进行打印,59题是把1到n平方的数字按照螺旋的顺序进行放置 54. Spiral Matrix start表示的是每次一圈的开始,每次开始其实就是从(0,0).(1,1 ...
- LeetCode: Spiral Matrix II 解题报告-三种方法解决旋转矩阵问题
Spiral Matrix IIGiven an integer n, generate a square matrix filled with elements from 1 to n2 in sp ...
- 【leetcode】59.Spiral Matrix II
Leetcode59 Spiral Matrix II Given an integer n, generate a square matrix filled with elements from 1 ...
- Leetcode 54. Spiral Matrix & 59. Spiral Matrix II
54. Spiral Matrix [Medium] Description Given a matrix of m x n elements (m rows, n columns), return ...
随机推荐
- 【转载】Attention Mechanism in Deep Learning
本篇随笔为转载,原文地址:知乎,深度学习中Attention Mechanism详细介绍:原理.分类及应用.参考链接:深度学习中的注意力机制. Attention是一种用于提升基于RNN(LSTM或G ...
- 实际应用脚本备份1——Ubuntu下应用升级脚本与执行方法
程序自动更新脚本,命名为makefile: build:run run: killall java /webapps/‘应用目录名’/ /webapps/ ‘应用目录名’/ cd /opt/apach ...
- CF875F Royal Questions[最大生成基环树森林]
这题这场比赛一堆人秒切..果然还是我太菜了吗 题意:二分图,右边$m$个点每个点$i$向左边有且仅有两条连边,边权都是$a_i$.求最大匹配. 一个朴素思想,二分图匹配,用贪心带匈牙利搞一搞,但是复杂 ...
- BZOJ 3881[COCI2015]Divljak (AC自动机+dfs序+lca+BIT)
显然是用AC自动机 先构建好AC自动机,当B中插入新的串时就在trie上跑,对于当前点,首先这个点所代表的串一定出现过,然后这个点指向的fail也一定出现过.那么我们把每个点fail当作父亲,建一棵f ...
- 2019CCPC秦皇岛赛区(重现赛)- F
链接: http://acm.hdu.edu.cn/contests/contest_showproblem.php?pid=1006&cid=872 题意: Z 国近年来一直在考虑遏制国土沙 ...
- docker: error pulling image configuration: Get https://xx net/http: TLS handshake timeout
很明显可以看出是连接不到 docker hub,那就需要查看网络原因了.可能需要个梯子.当然较简单的解决办法就是用国内的仓库,下面的方法就是使用国内的 daocloud 的仓库: $ echo &qu ...
- java上传大文件解决方案
需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在10G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以10G来进行限制. 第一步: 前端修改 由于项目使用的是BJ ...
- 2018 南京预选赛 J Sum ( 欧拉素数筛 、Square-free Number、DP )
题目链接 题意 : 定义不能被平方数整除的数为 Square-free Number 定义 F(i) = 有几对不同的 a 和 b 使得 i = a * b 且 a .b 都是 Square-free ...
- python版本升级流程,升级2.7跟3.x版本流程一样
前言: 目前python2.6版本很多库已经不支持,在安装库的时候总会遇到很多装不上的事故,特别烦恼,所以以后不纠结,直接升级python版本后再使用,避免多次采坑:当然,未来趋势还是python3. ...
- Spring——代理工厂实现增强
借助Spring IOC的机制,为ProxyFactory代理工厂的属性实现依赖注入,这样做的优点是可配置型高,易用性好. 1.创建抽象主题 public interface ProService { ...