lintcode,螺旋矩阵
2016-12-15 13:11
267 查看
给定一个包含 m x n 个要素的矩阵,(m 行, n 列),按照螺旋顺序,返回该矩阵中的所有要素。
样例
给定如下矩阵:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
应返回 [1,2,3,6,9,8,7,4,5]。
一刷没ac
解题思路:定义左上角和右下角边界,螺旋遍历,需要注意的时候要判断是否在同一行和同一列,否则不需要转四次。
样例
给定如下矩阵:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
应返回 [1,2,3,6,9,8,7,4,5]。
一刷没ac
解题思路:定义左上角和右下角边界,螺旋遍历,需要注意的时候要判断是否在同一行和同一列,否则不需要转四次。
public class Solution { /** * @param matrix a matrix of m x n elements * @return an integer list */ public List<Integer> spiralOrder(int[][] matrix) { List<Integer> result = new ArrayList<Integer>(); if(matrix == null || matrix.length == 0 || matrix[0].length == 0) return result; int li = 0, lj = 0, ri = matrix.length-1, rj = matrix[0].length-1; while(li <= ri && lj <= rj){ int i = li, j = lj; while(j <= rj){ result.add(matrix[i][j]); j++; } i++; j--; while(i <= ri){ result.add(matrix[i][j]); i++; } i--; j--; while(j > lj && li != ri){ result.add(matrix[i][j]); j--; } while(i > li && lj != rj){ result.add(matrix[i][j]); i--; } li++; lj++; ri--; rj--; } return result; } }
相关文章推荐
- LintCode-374.螺旋矩阵
- LintCode 螺旋矩阵 (新解法)
- lintcode --螺旋矩阵II
- lintcode&九章算法——Google面试题:原子计数
- lintcode-easy-Longest Increasing Continuous Subsequence
- LintCode-生成括号
- lintcode:Delete Digits
- lintcode/leetcode由易至难第2题:冒泡排序
- Lintcode反转整数
- lintcode:二分查找
- lintcode: Partition List
- LintCode:最近公共祖先
- LintCode 题目答案
- LintCode-两个整数相除
- LintCode-丑数
- LintCode 删除链表中的元素
- LintCode Convert BST to Greater Tree
- lintcode-medium-Construct Binary Tree from Inorder and Postorder Traversal
- lintcode求两个数组的交出错
- LintCode :落单的数