螺旋矩阵~

简介: 螺旋矩阵~
class Solution {

    public List<Integer> spiralOrder(int[][] matrix) {

        List<Integer> order = new ArrayList<Integer>();

        if(matrix == null || matrix.length == 0 || matrix[0].length == 0){

            return order;

        }

        int rows = matrix.length;

        int colums = matrix[0].length;

        int left = 0, right = colums-1,top = 0 , bottom = rows-1;

        while(left<=right && top <= bottom ){

            for (int column = left; column <= right;column++){

                order.add(matrix[top][column]);

            }

            for(int row = top+1; row<=bottom; row++){

                order.add(matrix[row][right]);

            }

            // 检查是否需要继续遍历,如果当前区域不是一个行或列,则执行内部的遍历。

            if(left<right && top<bottom){

                //  从右到左遍历当前下边界,将元素添加到列表中

                for(int column = right-1 ; column>left ; column--){

                    order.add(matrix[bottom][column]);

                }

                for(int row = bottom; row>top; row--){

                    order.add(matrix[row][left]);

                }

            }

            // 更新边界值,缩小遍历区域。

            left++;

            right--;

            top++;

            bottom--;

        }

        //  返回按照螺旋顺序遍历矩阵后得到的整数列表

        return order;

    }

}


相关文章
|
21天前
|
C++
Leetcode第54题(螺旋矩阵)
这篇文章介绍了LeetCode第54题“螺旋矩阵”的解题思路和C++的实现代码,该题目要求按照顺时针螺旋顺序返回给定矩阵中的所有元素。
12 1
Leetcode第54题(螺旋矩阵)
|
21天前
|
算法 C++
Leetcode第59题(螺旋矩阵2)
这篇文章介绍了解决LeetCode第59题“螺旋矩阵II”的算法,通过C++编程实现按顺时针顺序填充一个n x n的正方形矩阵。
14 0
|
22天前
【LeetCode 05】螺旋矩阵II总结
【LeetCode 05】螺旋矩阵II总结
12 0
|
3月前
|
算法
LeetCode第59题螺旋矩阵 II
LeetCode第59题"螺旋矩阵 II"的解题方法,通过模拟螺旋填充过程,一圈一圈从外到内按顺序填充数字,直到完成整个矩阵的构建。
LeetCode第59题螺旋矩阵 II
|
3月前
|
存储 算法
LeetCode第54题螺旋矩阵
LeetCode第54题"螺旋矩阵"的解题方法,通过模拟从外到内的螺旋遍历过程,并利用方向向量控制遍历方向的转换,有效输出矩阵的螺旋顺序。
LeetCode第54题螺旋矩阵
|
3月前
|
算法
LeetCode第64题最小路径和
LeetCode第64题"最小路径和"的解题方法,运用动态规划思想,通过构建一个dp数组来记录到达每个点的最小路径和,从而高效求解。
LeetCode第64题最小路径和
|
3月前
|
算法
LeetCode第18题四数之和
该文章介绍了 LeetCode 第 18 题四数之和的解法,与三数之和类似,通过先排序,再用双指针确定坐标并去重的方式解决,关键是确定四个坐标,前两个通过两层循环确定,后两个通过首尾双指针确定,同时总结了双指针可减少循环次数,使解决方式更简单高效。
LeetCode第18题四数之和
|
5月前
leetcode54螺旋矩阵题解
leetcode54螺旋矩阵题解
31 2
|
6月前
leetcode-64:最小路径和
leetcode-64:最小路径和
38 0
|
6月前
|
Java C++ Python
leetcode-59:螺旋矩阵 II
leetcode-59:螺旋矩阵 II
33 0