【Leetcode】59. 螺旋矩阵 II
时间:2022-06-09
本文章向大家介绍【Leetcode】59. 螺旋矩阵 II,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目
给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
题解
这个题目也比较简单, 和第54题类似:
这个题目很简单,上下左右分别用四个变量去标志:
上:top
下:bottom
左:left
右: right
就按照四步走就可以:
left -> right
top -> bottom
right -> left
bottom -> top
python
class Solution:
def generateMatrix(self, n):
"""
:type n: int
:rtype: List[List[int]]
"""
matrix = [[0 for j in range(n)] for i in range(n)]
top = 0
bottom = n - 1
left = 0
right = n - 1
count = 1
while (True):
for i in range(left, right + 1):
matrix[top][i] = count
count += 1
top += 1
if left > right or top > bottom:
break
for i in range(top, bottom + 1):
matrix[i][right] = count
count += 1
right -= 1
if left > right or top > bottom:
break
for j in range(left, right + 1)[::-1]:
matrix[bottom][j] = count
count += 1
bottom -= 1
if left > right or top > bottom:
break
for i in range(top, bottom + 1)[::-1]:
matrix[i][left] = count
count += 1
left += 1
if left > right or top > bottom:
break
return matrix
java
class Solution {
public int[][] generateMatrix(int n) {
int[][] matrix = new int[n][n];
int top = 0;
int bottom = matrix.length - 1;
int left = 0;
int right = matrix[0].length - 1;
int count = 1;
while (true) {
for (int i = left; i <= right; i++) matrix[top][i] = count++;
top++;
if (left > right || top > bottom) break;
for (int i = top; i <= bottom; i++) matrix[i][right] = count++;
right--;
if (left > right || top > bottom) break;
for (int i = right; i >= left; i--) matrix[bottom][i] = count++;
bottom--;
if (left > right || top > bottom) break;
for (int i = bottom; i >= top; i--) matrix[i][left] = count++;
left++;
if (left > right || top > bottom) break;
}
return matrix;
}
}
- hdu---1506(Largest Rectangle in a Histogram/dp最大子矩阵)
- 日志分析实战之清洗日志小实例6:获取uri点击量排序并得到最高的url
- golang使用sort接口实现排序示例
- hdu----(5056)Boring count(贪心)
- hdu----(5055)Bob and math problem(贪心)
- hadoop3.0 Yarn支持网络资源:network原理设计文档说明【中文】
- PHP-超级全局变量
- 日志分析实战之清洗日志小实例5:实现获取不能访问url
- CentOS安装Redis、PHPredis扩展
- 日志分析实战之清洗日志小实例4:统计网站相关信息
- PHP-数组排序
- hdu---(3555)Bomb(数位dp(入门))
- PHP-循环
- 日志分析实战之清洗日志小实例3:如何在spark shell中导入自定义包
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法