LeetCode(59):螺旋矩阵 II
LeetCode 矩阵 II 59 螺旋
2023-09-14 09:01:22 时间
Medium!
题目描述:
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
解题思路:
此题跟之前那道 Spiral Matrix 螺旋矩阵 本质上没什么区别,就相当于个类似逆运算的过程,这道题是要按螺旋的顺序来填数,由于给定矩形是个正方形,我们计算环数时用n / 2来计算,若n为奇数时,此时最中间的那个点没有被算在环数里,所以最后需要单独赋值,下标转换问题是难点,可以参考之前 Spiral Matrix 螺旋矩阵 的讲解来转换下标。
C++解法一:
1 class Solution { 2 public: 3 vector<vector<int> > generateMatrix(int n) { 4 vector<vector<int> > res(n, vector<int>(n, 1)); 5 int val = 1, p = n; 6 for (int i = 0; i < n / 2; ++i, p -= 2) { 7 for (int col = i; col < i + p; ++col) 8 res[i][col] = val++; 9 for (int row = i + 1; row < i + p; ++row) 10 res[row][i + p - 1] = val++; 11 for (int col = i + p - 2; col >= i; --col) 12 res[i + p - 1][col] = val++; 13 for (int row = i + p - 2; row > i; --row) 14 res[row][i] = val++; 15 } 16 if (n % 2 != 0) res[n / 2][n / 2] = val; 17 return res; 18 } 19 };
相关文章
- leetcode 191 二进制中1的个数 js 实现
- ☆打卡算法☆LeetCode 223. 矩形面积 算法解析
- <leetcode刷题-数组> 【双指针】旋转数组
- leetcode-167两数之和(双指针+二分)
- leetcode 70. 爬楼梯 js实现
- LeetCode 26. 删除排序数组中的重复项
- 【leetcode速通java版】01——数组入门
- LeetCode周赛325,反向思考专场,你有逆向思维吗?
- LeetCode周赛328,官方练习场
- 用Js刷LeetCode拿offer-经典高频40题
- JavaScript刷LeetCode心得总结
- Leetcode 矩阵置零
- LeetCode每日一题:合并两个有序数组