Spiral_Matrix

https://leetcode-cn.com/problems/spiral-matrix/

//当行数只有一行:
1、 n = 1;
m -> 0; //当列数只有一列
2、m = 1;
n -> 0; //行数为 n, 列数为m
3、 。。。。。。
。。。。。。
。。。。。。
。。。。。。
1) 第一次
x, y
y = 0; x : 0 -> m-1;
x = m-1; y : 0 -> n-1;
y = n-1; x : m -> 0;
x = 0; y : n -> 1 2) 第二次
y = 1; x : 0 -> m -2;
x = m-2; y : 1 -> n - 2;
y = n -2; x:m -1 -> 1;
x = m-2; y : n-1 -> 2 ...以此类推

代码

class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
ArrayList<Integer> list = new ArrayList<Integer>(); if (matrix == null || matrix.length == 0) {
return null;
}
int n = matrix[0].length;
int m = matrix.length; int x = 0, y = 0;
int i, j;
while (n > 0 && m > 0) { if (n == 1) {
for (int k = 0; k < m; k++) {
list.add(matrix[k][0]);
}
return list;
} if (m == 1) {
for (int k = 0; k < n; k++) {
list.add(matrix[0][k]);
}
return list;
}
i = x;
j = y;
for (; i < n; i++) {
list.add(matrix[j][i]);
}
i --;
j ++;
for (; j < m; j++) {
list.add(matrix[j][i]);
}
i --;
j --;
for(; i >= x ; i--) {
list.add(matrix[j][i]);
}
j--;
i++;
for(; j >= y + 1; j--) {
list.add(matrix[j][i]);
}
x++;
y++;
m--;
n--;
}
return list;
}
}

  

Leetcode53_Spiral_Matrix的更多相关文章

随机推荐

  1. 201871010116-祁英红《面向对象程序设计(java)》第十一周学习总结

    博文正文开头格式:(2分) 项目 内容 <面向对象程序设计(java)> https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://ww ...

  2. ACWING 95 费解的开关 解题记录

    你玩过“拉灯”游戏吗?25盏灯排成一个5x5的方形.每一个灯都有一个开关,游戏者可以改变它的状态.每一步,游戏者可以改变某一个灯的状态.游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也 ...

  3. for(var i in items) 和 for(var i;i<items.length;i++) 区别

    前者循环的是属性,后者循环的才是数组. 若项目中对数组属性进行了扩展,那切记不能使用前者,否则在循环数组时扩展的函数体也会被当做数据返回. var data = { p1:1, p2:"b& ...

  4. 修改SQL Server中的计算机名

    安装SQL Server之后,如果修改计算机名会导致登录异常,或者某些功能不能用,例如配置Replication时会提示如下错误: SQL Server replication requires th ...

  5. IT兄弟连 HTML5教程 HTML5和HTML的关系

    HTML5开发现在很火爆,是一门技术,更是一个概念.可以让我们的工作模式.交互模式以及对应用和游戏的体验有了翻天覆地的变化,很多人都知道HTML5这门技术,也常把HTML5读作H5(简称).其实一些外 ...

  6. IT兄弟连 Java语法教程 逻辑运算符

    表8中显示的布尔逻辑运算符只能操作布尔类型的操作数,所有的二元逻辑运算符都可以组合两个布尔值,得到的结果为布尔类型. 表8  布尔逻辑运算符 布尔逻辑运算符”&“.”|“以及”^“,都会布尔值 ...

  7. SAS与SATA的区别

    SAS SATA的区别 协议方面 SAS(Serial Attached SCSI)即串行连接SCSI,SATA(Serial Advanced Technology Attachment)即串行高级 ...

  8. Elastic:如何在一个机器上同时模拟多个node

    Elastic:如何在一个机器上同时模拟多个node /bin/elasticsearch -E node.name=node1 -E cluster.name=my-application -E p ...

  9. docker registry 删除镜像 垃圾回收

    操作步骤 通过环境变量修改默认配置,允许删除 获取image的sha值 进入registry容器中,执行垃圾回收 删除残留目录 #环境变量 REGISTRY_STORAGE_DELETE_ENABLE ...

  10. 【IDEA】(1)---MAC下常用快捷键

    IDEA常用快捷键 IDEA是一个很好的开发工具,用好它能大大提高我们的开发效率,所以这里学习总结下有关IDEA实用的一些教程,比如常用快捷键,如何自定义代码模版,如何debug异常断点,或者说多线程 ...