题目:

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 ]
]

链接: http://leetcode.com/problems/spiral-matrix-ii/

题解:

和spiral matrix I基本一样,这回事生成一个spiral matrix。最近的问题是,题目不难,但要提高做题速度和准确度,这样才有时间能学习别的知识。

要学习和想学习的东西很多很多,像多线程,软件测试,QA, Python,Javascript,Design Patterns, OO Design, System Design, Operating Systems, Distributed Systems,Data Mining, Machine Learning以及真题。继续努力吧,刷题只是很小的一部分,不过连题也刷不顺的话,是没机会进好公司的。

还要好好学习学习时间管理,时间真的不够用。

Time Complexity - O(n * n), Space Complexity - O(1)。

public class Solution {
public int[][] generateMatrix(int n) {
if(n <= 0)
return new int[0][0];
int[][] res = new int[n][n];
int count = 1;
int left = 0, right = n - 1, top = 0, bot = n - 1; while(count <= n * n) {
for(int i = left; i <= right; i++)
res[top][i] = count++;
top++; if(count <= n * n) {
for(int i = top; i <= bot; i++)
res[i][right] = count++;
right--;
} if(count <= n * n) {
for(int i = right; i >= left; i--)
res[bot][i] = count++;
bot--;
} if(count <= n* n) {
for(int i = bot; i >= top; i--)
res[i][left] = count++;
left++;
}
} return res;
}
}

二刷:

跟一刷一样,也跟Spiral Matrix I一样,设置四个边界点然后一直转圈赋值就可以了。

Java:

Time Complexity - O(n * n), Space Complexity - O(1)

public class Solution {
public int[][] generateMatrix(int n) {
if (n <= 0) {
return new int[][] {};
}
int[][] res = new int[n][n];
int totalElements = n * n, count = 0; int left = 0, right = n -1, top = 0, bot = n - 1;
while (count < totalElements) {
for (int i = left; i <= right; i++) {
res[top][i] = count + 1;
count++;
}
top++;
if (count < totalElements) {
for (int i = top; i <= bot; i++) {
res[i][right] = count + 1;
count++;
}
right--;
}
if (count < totalElements) {
for (int i = right; i >= left; i--) {
res[bot][i] = count + 1;
count++;
}
bot--;
}
if (count < totalElements) {
for (int i = bot; i >= top; i--) {
res[i][left] = count + 1;
count++;
}
left++;
}
}
return res;
}
}

题外话:

1/30/2016

今天蘑菇回国,很想念她,希望咳嗽早点好,然后多吃多玩,好好放松休息吧。

这两天群里的小伙伴们讨论得很有干劲,但有不少朋友可能是三分钟热度,希望能持之以恒,一起加油。另外,看到地理说刷了5遍还没找到工作以及刷了4遍还没找到实习的...压力山大啊...

发现了一本好书<Big Data: Principles and best practices of scalable realtime data systems>。 有机会要好好读一读。自己系统设计,包括一般设计方面的技术,思路等等都比较差。这就是以前几年沉溺在温床中,不思进取混日子的代价。要多思考多练习,多参加一些tech talk,不要总做井底之蛙。

三刷:

跟前面一样。就是先确定好n x n矩阵,以及总元素 totalElements = n * n。 设置一个count = 1,在count <= totalElements的情况下进行转圈赋值。

Java:

public class Solution {
public int[][] generateMatrix(int n) {
if (n <= 0) return new int[][] {};
int[][] matrix = new int[n][n];
int left = 0, right = n - 1, top = 0, bot = n - 1;
int count = 1, totalElements = n * n;
while (count <= totalElements) {
for (int i = left; i <= right; i++) matrix[top][i] = count++;
top++;
if (count <= totalElements) {
for (int i = top; i <= bot; i++) matrix[i][right] = count++;
right--;
}
if (count <= totalElements) {
for (int i = right; i >= left; i--) matrix[bot][i] = count++;
bot--;
}
if (count <= totalElements) {
for (int i = bot; i >= top; i--) matrix[i][left] = count++;
left++;
}
}
return matrix;
}
}

相关题目:

http://www.cnblogs.com/yrbbest/p/5165084.html

59. Spiral Matrix II的更多相关文章

  1. leetcode 54. Spiral Matrix 、59. Spiral Matrix II

    54题是把二维数组安卓螺旋的顺序进行打印,59题是把1到n平方的数字按照螺旋的顺序进行放置 54. Spiral Matrix start表示的是每次一圈的开始,每次开始其实就是从(0,0).(1,1 ...

  2. Leetcode 54. Spiral Matrix & 59. Spiral Matrix II

    54. Spiral Matrix [Medium] Description Given a matrix of m x n elements (m rows, n columns), return ...

  3. 【leetcode】59.Spiral Matrix II

    Leetcode59 Spiral Matrix II Given an integer n, generate a square matrix filled with elements from 1 ...

  4. Leetcode#59 Spiral Matrix II

    原题地址 相比于Spiral Matrix(参见这篇文章)要简单一些,因为是方阵,所以代码简洁一些. 注意当n是奇数的时候,中心小块要单独赋值(代码21行) 代码: vector<vector& ...

  5. LeetCode OJ 59. Spiral Matrix II

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

  6. 59. Spiral Matrix II(中等,同54题)

    Given an integer \(n\), generate a square matrix filled with elements from 1 to \(n^2\) in spiral or ...

  7. 【一天一道LeetCode】#59. Spiral Matrix II

    一天一道LeetCode系列 (一)题目 Given an integer n, generate a square matrix filled with elements from 1 to n2 ...

  8. LeetCode: 59. Spiral Matrix II(Medium)

    1. 原题链接 https://leetcode.com/problems/spiral-matrix-ii/description/ 2. 题目要求 给定一个正整数n,求出从1到n平方的螺旋矩阵.例 ...

  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 ...

随机推荐

  1. Delphi 和 C++Builder 2014年及以后技术路线图

    RAD Studio, Delphi 和 C++Builder 2014年及以后技术路线图 By: Embarcadero News 内容源自Embarcadero新闻组,本人水平有限,欢迎各位高人修 ...

  2. (转载)delphi文件流

    delphi文件流 [复制链接] 在Delphi中,所有流对象的基类为TStream类,其中定义了所有流的共同属性和方法. TStream类中定义的属性介绍如下: 1.Size: 此属性以字节返回流中 ...

  3. Redis集群明细文档

    Redis目前版本是没有提供集群功能的,如果要实现多台Redis同时提供服务只能通过客户端自身去实现(Memchached也是客户端实现分布式).目前根据文档已经看到Redis正在开发集群功能,其中一 ...

  4. 7、XAML的编译过程

    对于动态皮肤场景来说,在运行时加载和解析XAML是有意义的,对于那些没有支持XAML编译的.NET语言也是有意义的.但大多数WPF项目会通过MSBuild和Visual Studio完成XAML编译. ...

  5. Android系统SVC命令教程

    svc命令,位置在/system/bin目录下,用来管理电源控制,无线数据,WIFI # svc svc Available commands: help Show information about ...

  6. iOS多线程编程Part 2/3 - NSOperation

    多线程编程Part 1介绍了NSThread以及NSRunLoop,这篇Blog介绍另一种并发编程技术:NSOPeration. NSOperation & NSOperationQueue ...

  7. ActiveMQ使用记录

    1.在Linux中安装ActiveMQ 官方文档地址:http://activemq.apache.org/getting-started.html#GettingStarted-StartingAc ...

  8. Entity Framework(序)

    ADO.NET Entity Framework 是一个对象-关系的映射结构,它提供了ADO.NET的一个抽象,可基于引用的数据库获取对象模型.可以通过Entity Framework 使用不同的变成 ...

  9. matlab实现高斯消去法、LU分解

    朴素高斯消去法: function x = GauElim(n, A, b) if nargin < 2 for i = 1 : 1 : n for j = 1 : 1 : n A(i, j) ...

  10. SharePoint 2010/SharePoint 2013 Custom Action: 基于Site Collection 滚动文字的通知.

    应用场景: 有时候我们的站点需要在每个页面实现滚动文字的通知,怎么在不修改Master Page的情况下实现这个功能?我们可以使用Javascript 和 Custom Action 来实现. 创建一 ...