博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode]Spiral Matrix 54
阅读量:5296 次
发布时间:2019-06-14

本文共 2636 字,大约阅读时间需要 8 分钟。

54.Spiral Matrix

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

 

好久没做题了,博客也好久没更新,今天来一发水题,话说这题有点像poj的滑雪题.

传送门POJ:

题解:http://www.cnblogs.com/dick159/p/5258943.html

 

先说一下这题吧,就是分四个方向,然后从外到里按照顺序遍历,要注意结束条件.(我设置成访问过的值就不访问了)

ps:要判断一下间隔了的2个方向是否发生过移动,如果没有发生过移动则表示遍历已完毕.(这里我就用list的大小是否发生了变化来判断.)

目前没有想到更好的方法。【太笨了(╯﹏╰)】

 

Java Code:

public class Solution {        public List
spiralOrder( int[][] matrix ) { List
list = new ArrayList
(); if( matrix == null || matrix.length == 0 ) return list; int m = matrix[ 0 ].length; int n = matrix.length; if( matrix[ 0 ].length == 1 ) { for( int i = 0; i < n; i++ ) { list.add( matrix[ i ][ 0 ] ); } return list; } if( matrix.length == 1 ) { for( int i = 0; i < m; i++ ) { list.add( matrix[ 0 ][ i ] ); } return list; } int l = 0; int preSize = 0; int i = -1; while( matrix[ l ][ l ] != -Integer.MAX_VALUE ) { preSize = list.size(); for( i = l; i < m - l; i++ ) { list.add( matrix[ l ][ i ] ); matrix[ l ][ i ] = -Integer.MAX_VALUE; } if(preSize == list.size()){ return list; } preSize = list.size(); for( i = l + 1; i < n - l; i++ ) { list.add( matrix[ i ][ m - l - 1 ] ); matrix[ i ][ m - l - 1 ] = -Integer.MAX_VALUE; } if(preSize == list.size()){ return list; } preSize = list.size(); for( i = m - l - 2; i >= l; i-- ) { list.add( matrix[ n - l - 1 ][ i ] ); matrix[ n - l - 1 ][ i ] = -Integer.MAX_VALUE; } if(preSize == list.size()){ return list; } preSize = list.size(); for( i = n - l - 2; i >= l + 1; i-- ) { list.add( matrix[ i ][ l ] ); matrix[ i ][ l ] = -Integer.MAX_VALUE; } l++; } return list; }}

 

 

 

 

转载于:https://www.cnblogs.com/dick159/p/5982175.html

你可能感兴趣的文章
在现有的mysql主从基础上,搭建mycat实现数据的读写分离
查看>>
[Flex] flex手机项目如何限制横竖屏?只允许横屏?
查看>>
tensorflow的graph和session
查看>>
JavaScript动画打开半透明提示层
查看>>
Mybatis生成resulteMap时的注意事项
查看>>
jquery-jqzoom 插件 用例
查看>>
1007. Maximum Subsequence Sum (25)
查看>>
iframe的父子层跨域 用了百度的postMessage()方法
查看>>
图片生成缩略图
查看>>
动态规划 例子与复杂度
查看>>
查看oracle数据库的连接数以及用户
查看>>
【数据结构】栈结构操作示例
查看>>
中建项目环境迁移说明
查看>>
三.野指针和free
查看>>
activemq5.14+zookeeper3.4.9实现高可用
查看>>
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
HDU4405--Aeroplane chess(概率dp)
查看>>
CS0103: The name ‘Scripts’ does not exist in the current context解决方法
查看>>