文档章节

[leetcode] Spiral Matrix

jdflyfly
 jdflyfly
发布于 2014/06/26 14:37
字数 248
阅读 30
收藏 0

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,
Given the following matrix:

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

You should return[1,2,3,6,9,8,7,4,5].

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

思路:这题目不难理解,就是注意边界情况, 推荐用 上下左右4个bar的方法,简单不易出错。

import java.util.ArrayList;

public class Solution {
    public ArrayList<Integer> spiralOrder(int[][] matrix) {
        ArrayList<Integer> res = new ArrayList<Integer>();
        if (matrix == null || matrix.length < 1 || matrix[0].length < 1)
            return res;
        int left = 0;
        int right = matrix[0].length - 1;
        int top = 0;
        int bottom = matrix.length - 1;

        while (left <= right && top <= bottom) {
            int i;
            for (i = left; i <= right; i++)
                res.add(matrix[top][i]);

            for (i = top + 1; i <= bottom; i++)
                res.add(matrix[i][right]);

            if (top < bottom)//corner case, no need back to left if top==bottom
                for (i = right - 1; i >= left; i--)
                    res.add(matrix[bottom][i]);

            if (left < right)//corner case, no need back up if left==right
                for (i = bottom - 1; i >= top + 1; i--)
                    res.add(matrix[i][left]);

            top++;
            bottom--;
            left++;
            right--;
        }

        return res;

    }

    public static void main(String[] args) {
        int[][] matrix = new int[][] { { 1,2 }, { 5,6 }, { 9,10 } };
        System.out.println(new Solution().spiralOrder(matrix));
    }
}







© 著作权归作者所有

jdflyfly
粉丝 5
博文 115
码字总数 30127
作品 0
杭州
程序员
私信 提问
加载中

评论(0)

LeetCode:Spiral Matrix - 螺旋输出矩阵中的元素

1、题目名称 Spiral Matrix(螺旋输出矩阵中的元素) 2、题目地址 https://leetcode.com/problems/spiral-matrix/ 3、题目内容 英文:Given a matrix of m x n elements (m rows, n columns...

北风其凉
2015/11/02
988
0
Leetcode【54、59、885】

问题描述:【Array】54. Spiral Matrix 解题思路: 这道题是给一个矩阵,按顺时针螺旋输出所有数字。 这道题做法很直接,就是从最外层到最内层一层一层按照顺时针螺旋输出各个数字即可。如下...

牛奶芝麻
2019/07/02
0
0
LeetCode:Spiral Matrix II - 将元素1-n^2以螺旋序填充到矩阵

1、题目名称 Spiral Matrix(螺旋输出矩阵中的元素) 2、题目地址 https://leetcode.com/problems/spiral-matrix-ii/ 3、题目内容 英文:Given an integer n, generate a square matrix fill...

北风其凉
2015/11/03
411
0
[算法][LeetCode] 数组

[算法][LeetCode]Search a 2D Matrix——二维数组的二分查找 http://www.cnblogs.com/hiddenfox/p/3402797.html 将排序的二维数组看做一维数组来处理。不重构数据的情况下,将二分查找的一维...

素雷
2017/10/19
8
0
Leetcode日记7

(2015/1/2) LeetCode 318 Maximum Product of Word Lengths 题目: 1)求一个字符串数组中,两个不同的字符串的长度乘积的最大值。 2)这两个字符串不能共同拥有同一个字符。(两个字符串的...

fxdhdu
2016/01/03
62
0

没有更多内容

加载失败,请刷新页面

加载更多

何时使用vs ref vs out

前几天有人问我应该使用参数关键字out而不是ref 。 虽然我(我认为)理解了ref和out关键字之间的差异( 之前已经提到过 ),最好的解释似乎是ref == in and out ,什么是一些(假设的或代码的...

javail
26分钟前
37
0
宜信如何做到既满足远程办公的短时便利性需求,又不丧失安全性

对于IT互联网企业来说远程办公并不陌生,但是疫情的突然爆发,直接大规模的使用远程办公应用,势必会带来一系列的安全问题,尤其是大量隐私数据安全问题,因为此次的疫情,大量的企业内部人员...

宜信技术学院
31分钟前
29
0
如何获得元素的渲染高度?

如何获得元素的渲染高度? 假设您有一个<div>元素,其中包含一些内容。 内部的内容将扩展<div>的高度。 当您没有明确设置高度时,如何获得“渲染的”高度。 显然,我尝试过: var h = docume...

技术盛宴
42分钟前
40
0
zookeeper宕机与dubbo直连

加入zookeeper宕机后,一段时间内consumer依然能够获取provider的服务,实际上使用了本地缓存进行通讯,这也是dubbo健壮性的一种体验。 dubbo健壮性的表现: 1.监控中心宕机,不影响使用,只...

七宝1
43分钟前
44
0
一分钟了解【X-Frame-Options设置】

含义 通过设置X-Frame-Options来控制网页能否被frame或iframe嵌入。 目的 防止出现 点击劫持 :攻击者使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在网页上进行操作,此时用户将在...

crazymus
49分钟前
48
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部