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

目录
打赏
0
0
0
0
2
分享
相关文章
|
3月前
|
【LeetCode 热题100】73:矩阵置零(详细解析)(Go语言版)
这篇文章详细解析了力扣热题 73——矩阵置零问题,提供两种解法:一是使用额外标记数组,时间复杂度为 O(m * n),空间复杂度为 O(m + n);二是优化后的原地标记方法,利用矩阵的第一行和第一列记录需要置零的信息,将空间复杂度降低到 O(1)。文章通过清晰的代码示例与复杂度分析,帮助理解“原地操作”及空间优化技巧,并推荐相关练习题以巩固矩阵操作能力。适合刷题提升算法思维!
104 9
|
11月前
|
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
114 6
LeetCode第73题矩阵置零
文章介绍了LeetCode第73题"矩阵置零"的解法,通过使用矩阵的第一行和第一列作为标记来记录哪些行或列需要置零,从而在不增加额外空间的情况下解决问题。
LeetCode第73题矩阵置零
|
9月前
|
Leetcode第59题(螺旋矩阵2)
这篇文章介绍了解决LeetCode第59题“螺旋矩阵II”的算法,通过C++编程实现按顺时针顺序填充一个n x n的正方形矩阵。
53 0
|
11月前
|
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
123 6
|
11月前
|
【Leetcode刷题Python】剑指 Offer 30. 包含min函数的栈
本文提供了实现一个包含min函数的栈的Python代码,确保min、push和pop操作的时间复杂度为O(1)。
84 4
|
11月前
|
【Leetcode刷题Python】剑指 Offer 33. 二叉搜索树的后序遍历序列
本文提供了一种Python算法,用以判断给定整数数组是否为某二叉搜索树的后序遍历结果,通过识别根节点并递归验证左右子树的值是否满足二叉搜索树的性质。
59 3
|
11月前
|
【Leetcode刷题Python】剑指 Offer 32 - II. 从上到下打印二叉树 II
本文提供了一种Python实现方法,用于层次遍历二叉树并按层打印结果,每层节点按从左到右的顺序排列,每层打印到一行。
97 3
|
11月前
|
【Leetcode刷题Python】剑指 Offer 32 - I. 从上到下打印二叉树
本文介绍了使用Python实现从上到下打印二叉树的解决方案,采用层次遍历的方法,利用队列进行节点的访问。
71 2
|
11月前
|
【Leetcode刷题Python】73. 矩阵置零
本文介绍了LeetCode第73题的解法,题目要求在给定矩阵中将所有值为0的元素所在的行和列全部置为0,并提供了一种原地算法的Python实现。
110 0
【Leetcode刷题Python】73. 矩阵置零

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等