首页 > 其他分享 >剑指 Offer 29 顺时针打印矩阵

剑指 Offer 29 顺时针打印矩阵

时间:2022-12-22 11:14:16浏览次数:42  
标签:顺时针 matrix bottom int res Offer 29 left

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

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

示例 1:

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]

限制:

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

思路:直接模拟顺时针遍历矩阵的情况,每次打印完一行或一列后判断是否已经遍历完。

vector<int> spiralOrder(vector<vector<int>>& matrix) {
    if (matrix.size() == 0)
        return {};
    vector<int> res;
    int top = 0, bottom = matrix.size() - 1, left = 0, right = matrix[0].size() - 1;
    while (true) {
        for (int i = left; i <= right; i++) {
            res.push_back(matrix[top][i]);
        }
        if (++top > bottom)
            break;

        for (int i = top; i <= bottom; i++) {
            res.push_back(matrix[i][right]);
        }
        if (--right < left)
            break;

        for (int i = right; i >= left; i--) {
            res.push_back(matrix[bottom][i]);
        }
        if (--bottom < top)
            break;
            
        for (int i = bottom; i >= top; i--) {
            res.push_back(matrix[i][left]);
        }
        if (++left > right)
            break;
    }
    return res;
}

标签:顺时针,matrix,bottom,int,res,Offer,29,left
From: https://www.cnblogs.com/AngleLin/p/16997950.html

相关文章

  • 基于ADS1299的可穿戴设备调试之接口含义简析
    前言  几个项目都用到了ADS1299,没想到中间会出那么多的问题。在解决问题的时候,这里面暴露了团队的不少不足之处。看来做技术,还是需要不断地积累。思维不能留盲......
  • TI工程师总结的判断ADS129x是否工作正常的方法步骤
    当大多数ADC出现无响应时,可以通过一些基本的调试技术帮助验证器件是否仍然正常工作。以下是ADS129x器件出现无响应时需要采取的一些基本步骤:为器件通电。然后探测器......
  • 剑指 Offer 38 字符串的排列
    剑指Offer38|字符串的排列输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s="abc"输出:["......
  • 剑指 Offer 43 1~n整数中的十进制表示中1出现的次数
    剑指Offer43|1~n整数中的十进制表示中1出现的次数输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1的数字有1、10、11和12,1......
  • i春秋云镜 CVE-2022-32991
     第一种方法第二种延时注入     ......
  • 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数
    题目内容给定一个非负整数n ,请计算0到n之间的每个数字的二进制表示中1的个数,并输出一个数组。说明:0<=n<=105解题思路1直接运用内置函数bin()和count()将......
  • 【译】PEP-3129 类装饰器
    PEP原文:​​https://www.python.org/dev/peps/pep-3129​​PEP标题:ClassDecoratorsPEP作者:CollinWinter创建日期:2007-05-01合入版本:3.0译者:​​豌豆花下猫​​(Pyth......
  • P2329 栅栏
    简要题意木材店老板给出一个整数\(m\)和\(m\)个木板的长度。老板给出的木板可以随意无损耗切割。约翰给出一个整数\(n\)和所需要的\(n\)个木板的长度。求约翰能......
  • 剑指offer 数字在排序数组中出现的次数(C++)
    题目描述统计一个数字在排序数组中出现的次数。代码实现classSolution{public:intGetNumberOfK(vector<int>data,intk){if(data.empty())re......
  • 剑指offer 二叉树的深度(C++)
    题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。代码实现/*structTreeNode{intval;......