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

翻译

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

例如,给定 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;
    }
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值