题目:

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

分析:

这题是牛客网剑指offer的第十九题。顺时针打印就是按圈数循环打印,一圈包含两行或者两列,在打印的时候会出现某一圈中只包含一行,要判断从左向右打印和从右向左打印的时候是否会出现重复打印。同样

只包含一列时,要判断从上向下打印和从下向上打印的时候是否会出现重复打印的情况。其实这个思路很好理解,自己画个图就知道了。但是在coding的时候,在最后几个for'循环的条件处我卡到了。最后还是看

了大佬们的代码发现自己的循环条件少了一点。最后也AC了。

此处我也想说点题外话,记录一下自己这大约一年来的日子。距离我上次写博客已经8个多月了,那时我正开始准备考研。漫漫考研路,肯定是不那么轻松的。emmm代码也写的少(几乎没写过)。牛客网的剑指

offer我是考完研的时候刷的,最开始的一个月都没怎么写,最近是因为成绩出来了,不太好,对自己对学校都不满意,才开始写代码的。至于结果我想:尽不尽力,好还是不好,真的我不是很在意了。就算没考

上研,找到一个好工作我认为都是挺失败的。长远来看,研究生对思维系统的训练是公司无法给你的。毕竟人生的低谷啦,谁没有呢,是吧?不管接下来是二战还是工作,还是边工作边二战都是自己的选择。在

这个阶级固化的今天,无话可说。剑指offer已经刷一半了,做的还是一些我觉得偏简单的题,尽力吧,沉下心来。能升华多少是多少。不知道下次看到这篇文章是何时何地何种心态,开心最重要啦。反正我觉

得AC的味道最爽啦。

话说回来,这题是我觉得比较好的题,思路不算难,实现起来还是挺麻烦的。算是自己在剑指offer里面比较有成就感的一道题了。话不多说了,贴上代码也感谢下别人的代码,毕竟有大佬们的启发。

class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
int hang=matrix.size();
int lie=matrix[0].size();
vector<int> res;
res.clear();
int k=0;
if(hang>lie)
{
if(lie%2==1)
k=lie/2+1;
else
k=lie/2;
}
else
{
if(hang%2==1)
k=hang/2+1;
else
k=hang/2;
}
for(int i=0;i<k;i++)
{
for(int a=i;a<lie-i;a++)
{
res.push_back(matrix[i][a]);
}
for(int b=i+1;b<hang-i;b++)
{
res.push_back(matrix[b][lie-i-1]);
}
for(int c=lie-i-2;(c>=i)&&(hang-i-1!=i);c--)
{
res.push_back(matrix[hang-i-1][c]);
}
for(int d=hang-i-2;(d>i)&&(lie-i-1!=i);d--)
{
res.push_back(matrix[d][i]);
}
}
return res;
}
};

剑指offer得意之作——顺时针打印矩阵的更多相关文章

  1. 《剑指offer》顺时针打印矩阵

    本题来自<剑指offer> 顺时针打印矩阵 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 1 ...

  2. 剑指 Offer 29. 顺时针打印矩阵 + 蛇形矩阵 + 模拟 + 思维题

    剑指 Offer 29. 顺时针打印矩阵 Offer_29 题目描述: 题解分析: 题目的初衷是将这道题当做一个简单题处理 这道题一开始想的太复杂了,其实可以参考迷宫广度优先搜索的过程,只不过在选定一 ...

  3. 剑指 Offer 29. 顺时针打印矩阵

    剑指 Offer 29. 顺时针打印矩阵 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出: ...

  4. 力扣 - 剑指 Offer 29. 顺时针打印矩阵

    题目 剑指 Offer 29. 顺时针打印矩阵 思路1 其实就是按照理解题目的意思一步步从外层到内层打印出来,同时将一个外层分成四个部分分步打印 可以用一个变量count来维护当前打印的第几层 判断打 ...

  5. 【剑指Offer】顺时针打印矩阵 解题报告(Python)

    [剑指Offer]顺时针打印矩阵 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...

  6. 【剑指offer】顺时针打印矩阵

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/26053049 剑指offer上的第20题,九度OJ上測试通过. 题目描写叙述: 输入一个矩 ...

  7. 【Java】 剑指offer(29) 顺时针打印矩阵

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 思 ...

  8. Go语言实现:【剑指offer】顺时针打印矩阵

    该题目来源于牛客网<剑指offer>专题. 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 例如,如果输入如下4 X 4矩阵:1 2 3 4 5 6 7 8 9 10 11 ...

  9. 剑指offer——29顺时针打印矩阵

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...

随机推荐

  1. python数据类型(一)

    1.数据类型 python中数有四种类型:整数.长整数.浮点数和复数. 整数, 如 1 长整数 是比较大的整数 浮点数 如 1.23.3E-2 复数 如 1 + 2j. 1.1 + 2.2j 2. 自 ...

  2. oracle游标的使用

    --游标的使用 步骤1.声明游标 .打开游标 .获取数据 .关闭游标 declare cursor cur is select * from emp; t_sal cur%rowtype; begin ...

  3. ASP.NET CORE中使用Cookie身份认证

    大家在使用ASP.NET的时候一定都用过FormsAuthentication做登录用户的身份认证,FormsAuthentication的核心就是Cookie,ASP.NET会将用户名存储在Cook ...

  4. javascript 指定绑定函数名称,并且传递参数

      <html> <head> <title> New Document </title> <script type="text/jav ...

  5. POJ 3829 Seat taking up is tough(——只是题目很长的模拟)

    题目链接: http://poj.org/problem?id=3829 题意描述: 输入矩阵的大小n和m,以及来占位置的人数k 输入n*m的教室座位矩阵,每个值表示该座位的满意度 输入每个人来占位置 ...

  6. 久未更 ~ 五之 —— 引入外部CSS样式表 小节

    > > > > > 久未更 系列一:在html中引入外部css样式表 //引入外部css样式表 //<lilnk>要放在<head>标签的第一行, ...

  7. 现代 PHP 新特性系列(三) —— Trait 概览

    Trait是PHP 5.4引入的新概念,看上去既像类又像接口,其实都不是,Trait可以看做类的部分实现,可以混入一个或多个现有的PHP类中,其作用有两个:表明类可以做什么:提供模块化实现.Trait ...

  8. CSS容器属性

    最近一直想美化博客的文字效果和增加文章末尾的转发提示,所以这两天抽空研究了一下CSS,前两篇可以翻我的博客,今天写的这篇是介绍增加文章末尾的转发提示,效果如文章末尾所示,好了,CSS很简单,我就不介绍 ...

  9. 浅谈linux虚拟内存结构

    一个虚拟存储器系统要求硬件和软件之间紧密写作(mmu(内存管理单元,虚拟地址到物理地址的翻译),TLB块表(虚拟地址到物理地址index,虚拟寻址),l1,l2,l3高速缓存(物理单元数据)物理寻址) ...

  10. [one day one question] webpack打包压缩 ES6 js、.vue报错

    问题描述: 报错: ERROR in js/test.js from UglifyJs Unexpected token punc ?(?, expected punc ?:? [js/test.js ...