- 浏览: 184796 次
- 性别:
- 来自: 济南
文章分类
最新评论
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].
给定一个m*n个矩阵,按照顺时针的方向,输出矩阵中的元素。设定四个变量,top, bottom, left, right, 从第一行第一个元素开始,想添加最顶上一行的元素,然后让top加1; 然后添加右边的一列元素,让right减1;接下来添加最下面一行的元素,让bottom减1;最后添加最左边一列,然后让left加1,如果出现left > right 或者top > bottom时就停止。代码如下:
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].
给定一个m*n个矩阵,按照顺时针的方向,输出矩阵中的元素。设定四个变量,top, bottom, left, right, 从第一行第一个元素开始,想添加最顶上一行的元素,然后让top加1; 然后添加右边的一列元素,让right减1;接下来添加最下面一行的元素,让bottom减1;最后添加最左边一列,然后让left加1,如果出现left > right 或者top > bottom时就停止。代码如下:
public class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> list = new ArrayList<Integer>(); if(matrix == null || matrix.length == 0 || matrix[0].length == 0) return list; int left = 0; int right = matrix[0].length - 1; int top = 0; int bottom = matrix.length - 1; while(left <= right && top <= bottom) { // 添加顶上的元素 if(left <= right && top <= bottom) for(int i = left; i <= right; i++) { list.add(matrix[top][i]); } top ++; // 添加右边的元素 if(left <= right && top <= bottom) for(int j = top; j <= bottom; j++) { list.add(matrix[j][right]); } right --; //添加底部的元素 if(left <= right && top <= bottom) for(int m = right; m >= left; m--) { list.add(matrix[bottom][m]); } bottom --; // 添加左边的元素 if(left <= right && top <= bottom) for(int n = bottom; n >= top; n--) { list.add(matrix[n][left]); } left ++; } return list; } }
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 269Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 271You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 388Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 379Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 503Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 568Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 482Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 666Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 473The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 433Given an unsorted integer array ... -
Trapping Rain Water
2016-03-04 02:54 590Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 429All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 905Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 933Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 606Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 691Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 857Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 789You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 723For a undirected graph with tre ... -
Bulb Switcher
2016-02-28 12:12 442There are n bulbs that are init ...
相关推荐
js js_leetcode题解之54-spiral-matrix.js
c是最好的编程语言 C语言_leetcode题解之54-spiral-matrix.c
js js_leetcode题解之59-spiral-matrix-II.js
c语言入门 C语言_leetcode题解之59-spiral-matrix-ii.c
在本压缩包中,主题聚焦于C++编程基础与LeetCode题目的结合,特别是针对第54题“螺旋矩阵”(Spiral Matrix)的解法。LeetCode是一个在线平台,提供了一系列编程挑战,旨在帮助程序员提升算法技能和解决实际问题的...
第59题"螺旋矩阵II"(Spiral Matrix II)是LeetCode中的一个经典问题,它涉及到矩阵操作和迭代。在这个问题中,我们需要生成一个特定大小的螺旋矩阵,从中心向外螺旋式填充数字。 螺旋矩阵是一种特殊的二维数组,其...
在编程领域,蛇形数组(Spiral Matrix)是一种特殊的二维数组排列方式,它按照从左上角开始,先向右填充,然后向下,接着向左,最后向上这样的顺序不断循环,形成一种类似蛇行的路径。在ACM(国际大学生程序设计竞赛...
printf("The spiral matrix is:\n"); printSpiral(arr, rows, cols); return 0; } ``` 这个程序首先获取用户输入的矩阵大小和元素,然后调用`printSpiral`函数按照螺旋顺序打印矩阵。注意,这里的代码仅用于...
本题解围绕的是LeetCode中的第54题——螺旋矩阵(Spiral Matrix)。该题目的核心是理解递归与回溯的概念,并运用它们来解决实际问题。 螺旋矩阵是一种特殊的矩阵布局方式,数据按照顺时针方向螺旋地填充二维数组。...
标题中的“python-leetcode面试题解之第54题螺旋矩阵-题解.zip”表明这是一个关于Python编程语言的LeetCode面试题解答,具体是针对第54题——螺旋矩阵(Spiral Matrix)的解题代码和分析。LeetCode是一个在线平台,...
首先,我们来看螺旋方阵(Spiral Matrix)。螺旋方阵是一种特殊的矩阵排列方式,它从中心开始,按照顺时针或逆时针方向向外扩展,形成一个类似螺旋的形状。例如,对于一个4x4的矩阵,我们可能得到如下的螺旋: ``` ...
**螺旋矩阵(Spiral Matrix)**是一种特殊的矩阵排列方式,它按照螺旋顺序填充数字,通常从左上角开始,顺时针方向旋转,直到填满整个矩阵。在编程领域,理解和实现螺旋矩阵是非常常见的练习,它能锻炼程序员对数组...
- Spiral Matrix(螺旋矩阵) - Integer to Roman(整数转罗马数字) 9. Stack(栈): 栈是一种后进先出(LIFO)的数据结构,它有两个主要操作:push(压栈)和pop(出栈)。文件中提到了栈相关的算法: - Min ...
杂项部分包括了一些不那么容易归类的问题,如螺旋矩阵(Spiral Matrix)、整数转罗马数字(Integer to Roman)、克隆图(Clone Graph)等。 **栈(Stack)** 栈是一种先进后出(FILO)的数据结构。 - 最小栈(Min ...
35. Spiral Matrix:按螺旋方式打印矩阵。 36. Integer to Roman:将整数转换为罗马数字。 37. Roman to Integer:将罗马数字转换为整数。 38. Clone Graph:复制一个无向图。 39. Min Stack:设计一个栈,支持获取...
35. Spiral Matrix:螺旋遍历矩阵。 36. Integer to Roman:整数转换成罗马数字。 37. Roman to Integer:罗马数字转换成整数。 38. Clone Graph:深度复制一个图。 【栈】 39. Min Stack:设计一个栈,支持 push、...
...The number of questions is increasing recently. Here is the classification of all `468` questions. ...I'll keep updating for full summary and better solutions....|-----|---------------- | --------------- |...
- Spiral Matrix: 给定一个m×n矩阵,以螺旋方式遍历矩阵中的所有元素一次,并且只遍历一次。 - Merge Intervals: 给定一组区间,请合并所有重叠的区间。 - Insert Interval: 在一组已经排序的区间中,插入一个新的...