LeetCode——剑指 Offer 29【顺时针打印矩阵】

简介: LeetCode——剑指 Offer 29【顺时针打印矩阵】

题目

剑指 Offer 29. 顺时针打印矩阵

题目概述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。

限制:

0 <= matrix.length <= 100

0 <= matrix[i].length <= 100

示例

image.png

基础框架

class Solution {
    public int[] spiralOrder(int[][] matrix) {
    }
}

解题思路

顺时针打印也就是"从左向右、从上向下、从右向左、从下向上"遍历循环即可

代码详解

class Solution {
    public int[] spiralOrder(int[][] matrix) {
      if(matrix.length==0)
      {
      return new int[0];
      }
    int left=0,top=0;
    int right=matrix[0].length-1;
    int bottom=matrix.length-1;
    int[] res=new int[(right+1)*(bottom+1)];
    int k=0;
    //循环打印
    while(left<=right&&top<=bottom){
        //从左到右
        for(int i=left;i<=right;i++){
            res[k++]=matrix[top][i];
        }
        top++;
        //从上到下
        for(int i=top;i<=bottom;i++){
            res[k++]=matrix[i][right];
        }
        right--;
        //从右到左
        for(int i=right;i>=left&&top<=bottom;i--){
            res[k++]=matrix[bottom][i];
        }
        bottom--;
        //从下到上
        for(int i=bottom;i>=top&&left<=right;i--){
            res[k++]=matrix[i][left];
        }
        left++;
    }
         return res;
    }
}

image.png

相关文章
|
4月前
|
存储 算法 NoSQL
LeetCode第73题矩阵置零
文章介绍了LeetCode第73题"矩阵置零"的解法,通过使用矩阵的第一行和第一列作为标记来记录哪些行或列需要置零,从而在不增加额外空间的情况下解决问题。
LeetCode第73题矩阵置零
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
63 6
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 26. 树的子结构
这篇文章提供了解决LeetCode上"剑指Offer 26. 树的子结构"问题的Python代码实现和解析,判断一棵树B是否是另一棵树A的子结构。
56 4
|
2月前
|
算法 C++
Leetcode第59题(螺旋矩阵2)
这篇文章介绍了解决LeetCode第59题“螺旋矩阵II”的算法,通过C++编程实现按顺时针顺序填充一个n x n的正方形矩阵。
18 0
|
4月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
57 6
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 30. 包含min函数的栈
本文提供了实现一个包含min函数的栈的Python代码,确保min、push和pop操作的时间复杂度为O(1)。
33 4
|
4月前
|
算法 Python
【Leetcode刷题Python】剑指 Offer 33. 二叉搜索树的后序遍历序列
本文提供了一种Python算法,用以判断给定整数数组是否为某二叉搜索树的后序遍历结果,通过识别根节点并递归验证左右子树的值是否满足二叉搜索树的性质。
26 3
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - II. 从上到下打印二叉树 II
本文提供了一种Python实现方法,用于层次遍历二叉树并按层打印结果,每层节点按从左到右的顺序排列,每层打印到一行。
41 3
|
4月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - I. 从上到下打印二叉树
本文介绍了使用Python实现从上到下打印二叉树的解决方案,采用层次遍历的方法,利用队列进行节点的访问。
37 2
|
4月前
|
算法 Python
【Leetcode刷题Python】73. 矩阵置零
本文介绍了LeetCode第73题的解法,题目要求在给定矩阵中将所有值为0的元素所在的行和列全部置为0,并提供了一种原地算法的Python实现。
38 0
【Leetcode刷题Python】73. 矩阵置零