LeetCode 59 Spiral Matrix II(螺旋矩阵II)(Array)

简介: 版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/52145440 翻译给定一个整数nn,生成一个矩阵,要求以螺旋状将11到n2n^2的元素填进其中。
版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/52145440

翻译

给定一个整数n,生成一个矩阵,要求以螺旋状将1n2的元素填进其中。

例如,给定n=3

你应该返回以下矩阵:

[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

原文

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

For example,
Given n=3,

You should return the following matrix:

[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

分析

这个上一题非常类似,54题是由外到内的取值,59题则是有由外到内的赋值,条件甚至都不用变。

LeetCode 54 Spiral Matrix(螺旋矩阵)(Array)(*)

代码

C Plus Plus

class Solution {
public:
  vector<vector<int> > generateMatrix(int n) {

  vector<vector<int> > matrix(n, vector<int>(n) );
  int u = 0, d = n - 1, l = 0, r = n - 1, k = 0;

  while (true) {
    // up
    for (int col = l; col <= r; col++) matrix[u][col] = ++k;
    if (++u > d) break;
    // right
    for (int row = u; row <= d; row++) matrix[row][r] = ++k;
    if (--r < l) break;
    // down
    for (int col = r; col >= l; col--) matrix[d][col] = ++k;
    if (--d < u) break;
    // left
    for (int row = d; row >= u; row--) matrix[row][l] = ++k;
    if (++l > r) break;
  }
  return matrix;
}
};

Java

updated at 2016/09/04
    public int[][] generateMatrix(int n) {
        int[][] matrix = new int[n][n];
        if (n < 1) return matrix;
        int u = 0, d = n - 1, l = 0, r = n - 1, k = 1;
        while (true) {
            // up
            for (int col = l; col <= r; col++) matrix[u][col] = k++;
            if (++u > d) break;
            // right
            for (int row = u; row <= d; row++) matrix[row][r] = k++;
            if (--r < l) break;
            // down
            for (int col = r; col >= l; col--) matrix[d][col] = k++;
            if (--d < u) break;
            // left
            for (int row = d; row >= u; row--) matrix[row][l] = k++;
            if (++l > r) break;
        }
        return matrix;
    }
目录
相关文章
|
9月前
Leetcode 74. Search a 2D Matrix
这道题很简单,为此专门写篇博客其实算博客凑数了。给你一个每一行每一列都是增序,且每一行第一个数都大于上一行末尾数的矩阵,让你判断某个数在这个矩阵中是否存在。 假设矩阵是m*n,扫一遍的时间复杂度就是O(m*n),题目中给出的这么特殊的矩阵,时间复杂度可以降到O(m+n),具体代码如下,写的比较挫。
71 1
|
9月前
Leetcode 240. Search a 2D Matrix II
具体思路就是每一行倒着扫,扫到第一个比target小的数就跳到下行,如果等于当然是直接返回true了,如果下一行还比target小就继续跳下一行,直到最后一行。 为啥这么做是可行的? 可能我比较笨,想了半天才想到。 因为每一列都是增序的,举个例子,假设matrix[0][5] > target,那么[0][5]位置右下(包含右和下)所有元素不可能比target小。
37 0
|
4天前
|
算法
LeetCode第59题螺旋矩阵 II
LeetCode第59题"螺旋矩阵 II"的解题方法,通过模拟螺旋填充过程,一圈一圈从外到内按顺序填充数字,直到完成整个矩阵的构建。
LeetCode第59题螺旋矩阵 II
|
4天前
|
存储 算法
LeetCode第54题螺旋矩阵
LeetCode第54题"螺旋矩阵"的解题方法,通过模拟从外到内的螺旋遍历过程,并利用方向向量控制遍历方向的转换,有效输出矩阵的螺旋顺序。
LeetCode第54题螺旋矩阵
|
2月前
leetcode54螺旋矩阵题解
leetcode54螺旋矩阵题解
21 2
|
2月前
|
算法 机器人 数据挖掘
LeetCode题目54:螺旋矩阵【python4种算法实现】
LeetCode题目54:螺旋矩阵【python4种算法实现】
|
2月前
|
存储 算法
力扣经典150题第三十五题:螺旋矩阵
力扣经典150题第三十五题:螺旋矩阵
10 0
|
10月前
|
机器学习/深度学习 算法
代码随想录Day02 数组基础2 leetcode T977有序数组的平方, T209 长度最小的子数组,T59 螺旋矩阵II
代码随想录Day02 数组基础2 leetcode T977有序数组的平方, T209 长度最小的子数组,T59 螺旋矩阵II
47 0
|
3月前
leetcode-6111:螺旋矩阵 IV
leetcode-6111:螺旋矩阵 IV
32 0
|
3月前
|
Java C++ Python
leetcode-59:螺旋矩阵 II
leetcode-59:螺旋矩阵 II
26 0