lc.59 螺旋矩阵 II
题目描述
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

解题思路
- 没有具体的算法,考察的是模拟实现过程
- 一圈一圈的循环赋值(当n是奇数的时候,会少一圈,但是中间会有一个空值)
- 坚持循环不变量原则,循环条件:左闭右开(对应的循环条件总是<或者>,没有=)
代码实现
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
//定义一个二维数组
vector<vector<int>> res(n, vector<int>(n, 0));
int startx = 0;
int starty = 0;
int loop = (n / 2); //要循环几圈
int mid = (n / 2); //中间的位置
int offset = 1; //数组下标从0开始,用于控制每次循环一条边的长度
int count = 1; //用于生成1-n的数字
int i,j; //必须全局定义,不然后面有些for里不能使用
//大圈的循环
//n是偶数,循环n/2圈
//n是奇数,循环n/2圈,还留有中间的空
while(loop--){
j = starty;
i = startx;
//第一圈 第一行 左闭右开,第一行最后一个元素不赋值
for(j = starty; j < n - offset; j++){
res[startx][j] = count++; //先是 = count 后是count+1
}
//第一圈 第n列
for( i = startx; i < n - offset; i++){
res[i][j] = count++;
}
//第一圈 第n行
for(; j > starty; j--){
res[i][j] = count++;
}
//第一圈 第一列
for(; i > startx; i--){
res[i][j] = count++;
}
offset += 1;
startx ++;
starty ++;
}
//如果n是奇数,还剩下中间位置
if(n%2){
res[mid][mid] = count;
}
return res;
}
};
lc.59 螺旋矩阵 II的更多相关文章
- Java实现 LeetCode 59 螺旋矩阵 II
59. 螺旋矩阵 II 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ...
- 【LeetCode】59.螺旋矩阵II
59.螺旋矩阵II 知识点:数组: 题目描述 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix . 示例 输入:n = 3 ...
- leetcode 54. 螺旋矩阵 及 59. 螺旋矩阵 II
54. 螺旋矩阵 问题描述 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, ...
- LeetCode 59. 螺旋矩阵 II(Spiral Matrix II)
题目描述 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7 ...
- 代码随想录第二天| 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
2022/09/22 第二天 第一题 这题我就直接平方后排序了,很无脑但很快乐啊(官方题解是双指针 第二题 滑动窗口的问题,本来我也是直接暴力求解发现在leetCode上超时,看了官方题解,也是第一次 ...
- 59. 螺旋矩阵 II
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, ...
- 【LeetCode-面试算法经典-Java实现】【059-Spiral Matrix II(螺旋矩阵II)】
[059-Spiral Matrix II(螺旋矩阵II)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given an integer n, generate a ...
- LintCode-381.螺旋矩阵 II
螺旋矩阵 II 给你一个数n生成一个包含1-n^2的螺旋形矩阵 样例 n = 3 矩阵为 [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ] 标 ...
- LeetCode(59):螺旋矩阵 II
Medium! 题目描述: 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, ...
- [LeetCode] 59. Spiral Matrix II 螺旋矩阵 II
Given an integer n, generate a square matrix filled with elements from 1 to n^2 in spiral order. For ...
随机推荐
- oracle中将同一组的数据拼接(转)
需要用wm_concat函数来实现. 如目前在emp表中查询数据如下: 要按照deptno相同的将ename以字符串形式合并,可用如下语句: 1 select deptno,wm_concat(ena ...
- 6. C语言bool类型
C89没有定义布尔类型,所以C语⾔判断真假时以0为假,⾮0为真.所以我们通常使⽤逻辑变量的做法: 1 //宏定义布尔类型 2 3 #define BOOL int 4 5 #define TRUE 1 ...
- 安卓开发学习10-1:数据存储:Shared Preferences存储
解析 什么是Shared Perferences 应用场景 配置信息 主题信息 游戏的积分信息等 存储路径 在本应用中的data-data-应用包-自定义名称xml文件下保存写入的数据信息 使用 获取 ...
- prometheus 对接飞书告警
prometheus对接飞书告警 环境 名称 ip地址 cpu 内存 yz-feishu 10.65.6.91 4c 8G 飞书创建群组机器人,参考飞书官网 https://www.feishu.cn ...
- Oracle 计划任务批量清理临时表实例
昨天发现近一段时间,公司某oracle库数据泵方式备份比之前慢了很多,备份集大小并未增长太多.查看了下发现该用户下存在几十万张表. 一.问题分析 1.查看用户下面的表 select count(*) ...
- zookeeper设置开机自启
开机自启:(1)编辑zookeeper.service文件 vim /usr/lib/systemd/system/zookeeper.service 加入如下内容复制代码[Unit]Descript ...
- UGUI获取文本的字符内容像素宽度 【转】
在做文本框的时候,我们经常碰到需要计算字符输入的长度,然后适当地做处理.这个时候不能直接了当地拿text.Length来用,原因有: 1.字符会因为fontSize的大小不同而有不同的宽度: 2.即使 ...
- css - contenteditable
css - contenteditable contenteditable属性 contenteditable 属性是 HTML5 中的新属性.规定是否可编辑元素的内容. 让contenteditab ...
- vue v-for 循环中,下拉框 el select 设置初始值 v-model
效果图: 2.解决思路是,v-model 赋值 单独创建一个数组,然后用于接收下拉框的值,然后提交的时候,将这个数组的值,放到提交的数组中. 3.参考: 解决v-for中遍历多个el-select时, ...
- 【python】python3.7与3.9共存,两个3版本同时存在(平时用vscode敲代码)pip复制
1.按照安装python及环境配置 - 人间寒梅 - 博客园 (cnblogs.com),将3.9装好. 2.在官网下载3.7的对应文件 3.下载后运行,并自定义下载且选中添加到path.,自己为py ...