LeetCode-54.Spiral Matrix
来源:互联网 发布:小学生画画软件 编辑:程序博客网 时间:2024/06/06 06:52
一、问题描述
- 给定一个m*n的矩阵,返回从[0,0]开始的矩阵螺旋列表。
- 例如给定矩阵[ [1,2,3],[4,5,6],[7,8,9] ],返回列表内容为[1,2,3,6,9,8,7,4,5].
二、解题思路
- 两次循环,内层循环分别按照从左往右,从上到下,从右往左,从下到上的顺序添加到列表,外层循环则控制不断重复这四个内层循环,直到条件不满足退出循环。
- 设置边界数组board,board[0]存储上边界,board[1]存储下边界,board[2]存储左边界,board[3]存储有边界。i,j分别表示当前位置元素的横纵坐标。
- 例如从左往右添加元素时,当j==board[3]-1时,此时已经到了最右边的元素,添加完钙元素后需要将i++,跳出当前内层循环,开始从上到下循环。
三、代码
public class Solution { public List<Integer> spiralOrder(int[][] matrix) { List<Integer> result=new ArrayList<Integer>(); if(matrix==null || matrix.length==0) return result; int[] board=new int[4]; board[0]=-1; board[1]=matrix.length; board[2]=-1; board[3]=matrix[0].length; int i=0; int j=0; while((true)){ while(j<board[3]){ if(j==board[3]-1){ result.add(matrix[i][j]); board[0]=board[0]+1;//上边界 i++; break; } result.add(matrix[i][j]); j++; } //因为退出循环前执行了i++,如果i超出边界,跳出外层循环。 if(i>=board[1]) break; while(i<board[1]){ if(i==board[1]-1){ result.add(matrix[i][j]); board[3]=board[3]-1;//有边界 j--; break; } result.add(matrix[i][j]); i++; } if(j<=board[2]) break; while(j>board[2]){ if(j==board[2]+1){ result.add(matrix[i][j]); board[1]=board[1]-1;//下边界 i--; break; } result.add(matrix[i][j]); j--; } if(i<=board[0]) break; while(i>board[0]){ if(i==board[0]+1){ result.add(matrix[i][j]); board[2]=board[2]+1;//左边界 j++; break; } result.add(matrix[i][j]); i--; } if(j>=board[3]) break; } return result; }}
阅读全文
0 0
- LeetCode 54. Spiral Matrix
- [LeetCode]54.Spiral Matrix
- LeetCode --- 54. Spiral Matrix
- [Leetcode] 54. Spiral Matrix
- [leetcode] 54.Spiral Matrix
- Leetcode-54.Spiral Matrix
- **LeetCode 54. Spiral Matrix
- Leetcode 54. Spiral Matrix
- [leetcode] 54. Spiral Matrix
- leetcode 54. Spiral Matrix
- 54. Spiral Matrix LeetCode
- leetcode 54. Spiral Matrix
- LeetCode *** 54. Spiral Matrix
- [LeetCode]54. Spiral Matrix
- LeetCode 54. Spiral Matrix
- LeetCode--54. Spiral Matrix
- LeetCode - 54. Spiral Matrix
- [Leetcode]54. Spiral Matrix
- 什么是接口?
- 递归7.递归方法实现逆序
- H5的突破性技术特色
- make(5)
- 编程的一点小感悟
- LeetCode-54.Spiral Matrix
- redis安装与运行
- Socket编程服务器不能打印客户端发送的消息
- web开发 隐藏滚动条
- php中关于qq第三方登录
- Android尾部带“查看更多”的TextView
- 用户注册
- android自定义进度条
- Monkey压力测试