题目:

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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. SpringMVC框架学习笔记——各种异常、报错解决

    1.Target runtime com.genuitec.runtime.generic.jee60 is not defined. 找到导入项目的.setting文件夹org.eclipse.ws ...

  2. UEP-标签

    这里的标签都是常用不好理解的: formatfunc="showFormatNumer" 显示数字在页面上 ockedcolumnnum="6" 几列是不动的 ...

  3. Core Animation 文档翻译(第三篇)

    Core Animation 文档翻译(第三篇) 设置Layer对象 当我们使用核心动画时,Layer对象是一切的核心.Layers 管理我们APP的可视化content,Layer也提供了conte ...

  4. 访问网站出现 Directory Listing Denied This Virtual Directory 

    出现这个提示是指没有在您指定的目录找到默认首页,比如您直接输入域名访问空间, 但是出现以上提示,那么请检查目录下是否有 index.htm,index.html,index.asp,default.a ...

  5. 苹果新贵 Swift 之前世今生

    摘要 : 做为一个70后程序员,克里斯先后发明了 LLVM.Clang 和 Swift,请问你做了什么?   上 周出差劳顿,这篇文章几次动笔都未完成,常常躺倒床上就昏睡过去.南方的天气闷热潮湿,让我 ...

  6. python基础6之迭代器&生成器、json&pickle数据序列化

    内容概要: 一.生成器 二.迭代器 三.json&pickle数据序列化 一.生成器generator 在学习生成器之前我们先了解下列表生成式,现在生产一个这样的列表[0,2,4,6,8,10 ...

  7. BIGIP-LTM中的NAT和SNAT

      http://250688049.blog.51cto.com/643101/1095880 一.NAT(Network Address Translation)网络地址转换1.NAT简介 NAT ...

  8. RocketMQ-广播模式消费

    Rocketmq 消费者默认是集群的方式消费的,消费者还可以用广播的模式进行消费.广播模式消费就是所有订阅同一个主题的消费者都会收到消息.代码实现上其实很简单,就是在消费端添加 consumer.se ...

  9. 【good】在CentOS 6.x上安装GlusterFS

    转发:http://quenywell.com/install-glusterfs-on-centos-6-x/ 本文主要介绍如何在CentOS 6.x上快速安装GlusterFS.GlusterFS ...

  10. apktool给软件加注册机修改图标和文件名

    功能实现,即让你的软件具有注册机功能,或者破解别人的软件,据为己有! 先反编译文件包 然后全局工具,修改图标和名称 加注册机,输入key,下载计算器,即可.给某个用户设置自定义的使用时间!