首页 > 其他分享 >顺时针打印矩阵

顺时针打印矩阵

时间:2022-12-14 22:55:46浏览次数:36  
标签:顺时针 int 打印 矩阵 dx ans dy y2 size

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

class Solution {
public:
    int dx[4] = {0, 1, 0, -1};
    int dy[4] = {1, 0, -1, 0};
    int x1, x2, y1, y2;
    
    bool in (int x, int y) {
        return x1 <= x && x < x2 && y1 <= y && y < y2;
    }
    
    void change (int k) {
        if (k == 0) x1++;
        else if (k == 1) y2--;
        else if (k == 2) x2--;
        else y1++;
    }
    
    vector<int> printMatrix(vector<vector<int> > g) {
        if (!g.size() || !g[0].size()) return {};
        x2 = g.size(), y2 = g[0].size();
        int len = x2 * y2;
        
        vector<int> ans;
        int x = 0, y = -1, k = 0;
        for (int i = 0; i < len; i++) {
            x += dx[k], y += dy[k];
            
            if (in(x, y)) {
                ans.push_back(g[x][y]);
            }
            else {
                x -= dx[k], y -= dy[k];
                change(k);
                k = (k + 1) % 4;
                x += dx[k], y += dy[k];
                ans.push_back(g[x][y]);
            }
            
        }
        
        return ans;
    }
};

  

标签:顺时针,int,打印,矩阵,dx,ans,dy,y2,size
From: https://www.cnblogs.com/leetothemoon/p/16983908.html

相关文章

  • [SCOI2015]小凸玩矩阵
    [SCOI2015]小凸玩矩阵链接:https://www.luogu.com.cn/problem/P4251题解:可以发现去掉了$k$的限制之后,原问题是一个二分图的最大独立集的问题,加上了$k$的限制就可以......
  • 矩阵快速幂
    快速幂如果希望求得一个数\(a\)的\(b\)次幂,一般情况下,暴力的做法就是从\(1\)遍历到\(b\),每次遍历时都将结果乘上\(a\),得到最终结果。这种做法的时间复杂度为\(O(......
  • 每天进步一点点《协方差矩阵的实践》
    详情见站内搜索《每天进步一点点《协方差矩阵的实践》》.docx上一次我们学习了PCA的过程,并且在最后还特意为大家介绍了协方差矩阵以及协方差矩阵的特征值和特征向量的作用......
  • 不可错过的网上打印攻略,网上打印文件真香!
    对于很多网友来说,线下周边打印店的收费是比较贵的,例如使用一张A4纸进行黑白单面打印就要收费1元,于是就把目光投向了网上打印店。而网上打印店有很多,有没有经营正规、打印......
  • Android11 实现侧键打印走纸
    /frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.javaelseif(keyCode==KeyEvent.KEYCODE_F12){      //XCSWw......
  • 矩阵中的路径
    请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。......
  • 基于uni-app开发跨平台应用的高性能进销存系统源码 仓库进销存ERP管理系统源码Uniapp
    框架:ThinkPHP5.0.24uniapp功能:1、支持采购单录入、审核、入库、退货等采购过程中的记录追踪2、支持销售、出库、销售审核、出库审核、退货等跟踪3、支持产品出库、入库的......
  • wpf WebView2 打印
    如果想要在wpf中使用浏览器的打印功能如何实现呢?可以选择CefSharp。但是CefSharp打包的程序似乎是包含浏览器内核,导致程序包太大。现在用WebView2试试。<Grid><Grid.......
  • 【转载】shell格式化打印
    转载自shell格式化打印......
  • HP 打印机 - 显示"加密凭证已过期"错误(macOS、iOS)
    HP打印机-显示"加密凭证已过期"错误(macOS、iOS) 本文档适用于HPAirPrint兼容的打印机和macOS或iOS。从macOS或iOS打印时,显示加密凭证已过期错误,并且......