• 剑指 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

    很简单,但还是有要注意的点:

    这个矩阵的行数和列数未必相等!从第二个样例可以看出来。

    需要元素总数来判断是否吧所有元素添加到结果中。

    遍历矩阵需要用到行数和列数,要区分好m和n。

    class Solution {
    public:
        vector<int> spiralOrder(vector<vector<int>>& matrix) {
            int cnt = 0, level = 0;
            if(matrix.size() == 0) return {};
            int n = matrix.size(), m = matrix[0].size();
            int count = n*m;
            
            vector<int> ans(count);
            
            while(cnt < count){
                for(int j=0+level; j<m-level && cnt<count; j++){
                    ans[cnt++] = matrix[0+level][j];
                }
                for(int i=1+level; i<n-level && cnt<count; i++){
                    ans[cnt++] = matrix[i][m-1-level];
                }
                for(int j=m-2-level; j>=0+level && cnt<count; j--){
                    ans[cnt++] = matrix[n-1-level][j];
                }
                for(int i=n-2-level; i>=1+level && cnt<count; i--){
                    ans[cnt++] = matrix[i][0+level];
                }
                level++;
            }
            
            
            return ans;
    
        }
    };

    我的算法上升空间还很大,今天面试变形二分没撕出来。继续努力吧,项目业务关还是很有信心的,可惜了算法题了。

    好在offer在手,接下来也不慌。

  • 相关阅读:
    django错误参考
    Pyhton模块学习
    jmeter
    SQL SERVER 2008
    touch的属性
    Sql Server Alter语句
    安装LoadRunner提示缺少vc2005_sp1_with_atl..
    sql语句
    数据库的知识
    十天学会<div+css>横向导航菜单和纵向导航菜单
  • 原文地址:https://www.cnblogs.com/AbsolutelyPerfect/p/14924872.html
Copyright © 2020-2023  润新知