题目链接: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的更多相关文章

  1. 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 ...

  2. 059 Spiral Matrix II 旋转打印矩阵 II

    给出正整数 n,生成正方形矩阵,矩阵元素为 1 到 n2 ,元素按顺时针顺序螺旋排列.例如,给定正整数 n = 3,应返回如下矩阵:[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6 ...

  3. 【leetcode】Spiral Matrix II

    Spiral Matrix II Given an integer n, generate a square matrix filled with elements from 1 to n2 in s ...

  4. 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 ...

  5. Spiral Matrix II

    Spiral Matrix II Given an integer n, generate a square matrix filled with elements from 1 to n2 in s ...

  6. leetcode 54. Spiral Matrix 、59. Spiral Matrix II

    54题是把二维数组安卓螺旋的顺序进行打印,59题是把1到n平方的数字按照螺旋的顺序进行放置 54. Spiral Matrix start表示的是每次一圈的开始,每次开始其实就是从(0,0).(1,1 ...

  7. LeetCode: Spiral Matrix II 解题报告-三种方法解决旋转矩阵问题

    Spiral Matrix IIGiven an integer n, generate a square matrix filled with elements from 1 to n2 in sp ...

  8. 【leetcode】59.Spiral Matrix II

    Leetcode59 Spiral Matrix II Given an integer n, generate a square matrix filled with elements from 1 ...

  9. 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 ...

随机推荐

  1. sql 实现取表中相同id时间最大的一行 利用distinct on

    数据表是这样的 select * from water_level_records m where ( select count(*) from water_level_records n where ...

  2. HTML符号代码速查表

    HTML实体符号被用作实现保留字符(reserved characters)或者表达键盘无法输入的一些常用字符.在大多数浏览器中默认的字符集为ISO-8859-1.HTML实体符号使我们在网页设计中经 ...

  3. 【算法学习笔记】RMQ问题与ST表

    \(0.\) RMQ问题 P1816 人话翻译 给定一个长度为\(n\)的数列\(a\),然后有\(m\)组询问,每次询问一个区间\([l,r]\)的最小值. 其中\(m,n\leq10^5\) \( ...

  4. 用python 遍历文件夹中所有.dcm文件

    import dicomimport os def eachFile(filepath): for file in os.listdir(filepath): child = os.path.join ...

  5. VUE-文本-事件-属性指令

    一.Vue文本指令 文本指令: 1.{{ }} 2.v-text:不能解析html语法的文本,会原样输出 3.v-html:能解析html语法的文本 4.v-once:处理的标签的内容只能被解析一次 ...

  6. H5微信分享相关规范

    微信分享 用户调用微信的分享功能,可以自定义分享的title和描述,以及小图标和链接.可以分享到群.好友.朋友圈.QQ.QQ空间等. 分享设计规范 分享标题:14字以内,建议使用朋友般亲切的口吻 分享 ...

  7. Java-FileUploadUtil工具类

    package com.gootrip.util; import java.io.File; import java.util.*; import org.apache.commons.fileupl ...

  8. jQuery 3.0 的新特性

    1. jQuery 3.0 运行在严格模式下 当下几乎支持jQuery 3.0的浏览器都支持严格模式,该版本正是基于此进行编译发布的. 你的代码已经运行在非严格模式?不用担心,你无需重写.jQuery ...

  9. Java 代码的精优化

    一.避免使用BigDecimal(double) BigDecimal(double) 存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常. 反例: // BigDecimal 反例 ...

  10. freemarker页面静态化

    1.工程结构 2. Student public class Student { private int id; private String name; private String address ...