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

这篇具有很好参考价值的文章主要介绍了剑指Offer-29-顺时针打印矩阵。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

剑指Offer-29题

题目描述:顺时针打印矩阵

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

剑指Offer-29-顺时针打印矩阵,剑指Offer,Java,leetcode

**题解思路:**使用 模拟 的方法

  1. 定义四个边界变量表示当前要遍历的边界:上(top)、下(bottom)、左(left)、右(right),条件结束的标志是[上边界<=下边界 且 左边界<=有边界]
  2. 再顺时针打顺序依次遍历矩阵的每一圈,并将每一个遍历到的元素添加到列表中,并更新边界的位置,继续下一轮的遍历,遍历顺序为:
    • 从左到右
    • 从上到下
    • 从右到左
    • 从下到上

代码如下:文章来源地址https://www.toymoban.com/news/detail-541155.html

class Solution {
    /**
     * 解题思路:使用 模拟 的方法
     */
    public int[] spiralOrder(int[][] matrix) {
        List<Integer> list = new ArrayList<>();
        if (matrix.length == 0 || matrix[0].length == 0 || matrix == null) return list.stream().mapToInt(Integer::intValue).toArray();

        //定义四个边界:上、下、右、左
        int top = 0, bottom = matrix.length-1, left = 0, right = matrix[0].length-1;
        while (top<=bottom && left<=right){
            //从左至右遍历
            for (int i=left;i<=right;i++){
                list.add(matrix[top][i]);
            }
            top++;//最上面一行遍历结束,向下移一行

            //从上到下遍历
            for (int i=top;i<=bottom;i++){
                list.add(matrix[i][right]);
            }
            right--;//最右边一列遍历结束,向左移一列

            //查看是否有剩余
            if (top<=bottom && left<=right){
                //从右向左遍历
                for (int i=right;i>=left;i--){
                    list.add(matrix[bottom][i]);
                }
                bottom--;//最下面的一行遍历结束,向上移一行

                //从下到上遍历
                for (int i=bottom;i>=top;i--){
                    list.add(matrix[i][left]);
                }
                left++;//最左边一列遍历结束,向右移一列
            }
        }
        return list.stream().mapToInt(Integer::intValue).toArray();//将 list->int[]
    }
}

到了这里,关于剑指Offer-29-顺时针打印矩阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 剑指Offer-29-顺时针打印矩阵

    剑指Offer-29题 题目描述:顺时针打印矩阵 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 **题解思路:**使用 模拟 的方法 定义四个边界变量表示当前要遍历的边界:上(top)、下(bottom)、左(left)、右(right),条件结束的标志是[上边界=下边界 且 左边界=有边

    2024年02月13日
    浏览(81)
  • 剑指offer(C++)-JZ29:顺时针打印矩阵(算法-模拟)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 则依次打印出数字 数据范围: 0 = matrix.length = 100 0 = ma

    2024年02月10日
    浏览(32)
  • 剑指29.顺时针打印矩阵 31 栈的压入,弹出序列 03 数组中的重复数字 53缺失的数字 04二维数组中的查找

    回字形 思路:pushed数组里遍历进栈,遍历时候,先进栈,再判断栈顶是否和poped序列的当前指向的是否一样,一样就pop,直到不一样为止,然后继续遍历进栈。然后再判断栈里面剩余的和poped序列指向的一不一样,一样,就把栈里面的pop,直到栈为空,只要有一个不一样,就

    2024年02月16日
    浏览(31)
  • 数据结构学习 jz29 顺时针打印矩阵

    :模拟 简单题做了超过40分钟 调了很久 不好  我自己做的。 xy_t: 记录xy的方向,往右走,往下走,往左走,往上走 t控制方向 isx:         true:轮到x方向动         false:轮到y方向动 n_res m_res:         n_res:还没走过的行数(x方向)         m_res:还没走

    2024年01月17日
    浏览(26)
  • Leetcode-每日一题【剑指 Offer 06. 从尾到头打印链表】

    输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1: 输入: head = [1,3,2] 输出: [2,3,1] 限制: 0 = 链表长度 = 10000 1.题目要求我们从尾到头反过来返回每个节点的值,这道题我们可以用栈去解决,但是我们还可以采用另一种方法。就是我们可以

    2024年02月13日
    浏览(28)
  • Leetcode-每日一题【剑指 Offer 32 - I. 从上到下打印二叉树】

    从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树:  [3,9,20,null,null,15,7] ,     3    /   9  20     /     15   7 返回: [3,9,20,15,7] 提示: 节点总数 = 1000 1.题目要求我们从上到下打印出二叉树的每个节点,同一层的节点按照从左

    2024年02月12日
    浏览(36)
  • (树) 剑指 Offer 32 - I. 从上到下打印二叉树 ——【Leetcode每日一题】

    难度:中等 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回: 提示 : 节点总数 = 100 💡思路:BFS 使用 优先队列 进行 层序遍历 即可! 🍁代码:(C++、Java) C++ Java 🚀 运行结果: 🕔 复杂度分析: 时间

    2024年02月14日
    浏览(30)
  • 【Leetcode -1290.二进制链表转整数 -剑指Offer 06.从尾到头打印链表】

    题目:给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的十进制值 。 示例 1: 输入:head = [1, 0, 1] 输出:5 解释:二进制数(101) 转化为十进制数(5) 示例 2: 输入:head = [0] 输出:

    2023年04月26日
    浏览(25)
  • Leetcode-每日一题【剑指 Offer 32 - III. 从上到下打印二叉树 III】

    请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如: 给定二叉树:  [3,9,20,null,null,15,7] ,     3    /   9  20     /     15   7 返回其层次遍历结果:

    2024年02月12日
    浏览(33)
  • Leetcode-每日一题【剑指 Offer 32 - II. 从上到下打印二叉树 II】

    从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。 例如: 给定二叉树:  [3,9,20,null,null,15,7] ,     3    /   9  20     /     15   7 返回其层次遍历结果: [   [3],   [9,20],   [15,7] ] 提示: 节点总数 = 1000 1.题目要求我们从上到下按层打印二

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包