剑指offer得意之作——顺时针打印矩阵
题目:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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得意之作——顺时针打印矩阵的更多相关文章
- 《剑指offer》顺时针打印矩阵
本题来自<剑指offer> 顺时针打印矩阵 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 1 ...
- 剑指 Offer 29. 顺时针打印矩阵 + 蛇形矩阵 + 模拟 + 思维题
剑指 Offer 29. 顺时针打印矩阵 Offer_29 题目描述: 题解分析: 题目的初衷是将这道题当做一个简单题处理 这道题一开始想的太复杂了,其实可以参考迷宫广度优先搜索的过程,只不过在选定一 ...
- 剑指 Offer 29. 顺时针打印矩阵
剑指 Offer 29. 顺时针打印矩阵 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出: ...
- 力扣 - 剑指 Offer 29. 顺时针打印矩阵
题目 剑指 Offer 29. 顺时针打印矩阵 思路1 其实就是按照理解题目的意思一步步从外层到内层打印出来,同时将一个外层分成四个部分分步打印 可以用一个变量count来维护当前打印的第几层 判断打 ...
- 【剑指Offer】顺时针打印矩阵 解题报告(Python)
[剑指Offer]顺时针打印矩阵 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...
- 【剑指offer】顺时针打印矩阵
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26053049 剑指offer上的第20题,九度OJ上測试通过. 题目描写叙述: 输入一个矩 ...
- 【Java】 剑指offer(29) 顺时针打印矩阵
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 思 ...
- Go语言实现:【剑指offer】顺时针打印矩阵
该题目来源于牛客网<剑指offer>专题. 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 例如,如果输入如下4 X 4矩阵:1 2 3 4 5 6 7 8 9 10 11 ...
- 剑指offer——29顺时针打印矩阵
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...
随机推荐
- SpringMVC框架学习笔记(1)——HelloWorld
搭建SpringMVC框架 1.添加jar包 jsp-api.jar servlet-api.jar jstl.jar commons-logging-1.1.1.jar spring-beans-4 ...
- bat脚本设置系统环境变量即时生效
关于bat的资料多但零碎,记录一下. 1.设置环境变量即时生效:通过重启explorer来实现即时生效(亲测有效) @echo off set curPath=%cd% wmic ENVIRONMEN ...
- CSS3 background-size图片自适应
http://www.html5cn.com.cn/css3/2013-04-21/267.html background-size属性和background-origin属性.background- ...
- FileZilla出现Failed to convert command to 8 bit charset
FileZilla这款FTP客户端软件,自从华哥使用以来,采用其默认的设置,一直用得很顺畅,没有出现过什么问题.但是今天碰到了一个问题.如图. 错误信息为:Failed to convert comm ...
- DEDECMS点击主栏目默认显示第一个子栏目列表的方法
本文实例讲述了DEDECMS点击主栏目默认显示第一个子栏目列表的方法.分享给大家供大家参考.具体分析如下: 今天公司有个需求是,点击导航上的父栏目进去默认显示第一个子栏目的列表,以下是具体实现方法,可 ...
- git只添加指定类型的文件的.gitignore规则
#忽略根目录下的所有文件 * #忽略子目录下的所有文件 /* #包含目录 !*/ #指定不忽略的文件 !*.c !*.h #忽略根目录下的文件 /build/ /appveyor/ /pear/ /s ...
- P1251 餐巾计划问题
P1251 餐巾计划问题 题目描述 一个餐厅在相继的 N 天里,每天需用的餐巾数不尽相同.假设第 iii 天需要 rir_iri块餐巾( i=1,2,...,N).餐厅可以购买新的餐巾,每块餐巾的费 ...
- DataTable转泛型List
在.net项目研发过程中,有时候需要将从数据库中获取的DataTable数据类型,转换为泛型集合,然后运用LINQ对集合进行操作,我将此总结一下,方便你我他. 核心类: public class Da ...
- 2017-06-22(locate shutdown half poweroff init0 reboot init 6)
locate locate 文件搜索命令 格式:locate [文件名] locate 在后台数据库中(/var/lib/mlocate/mlocate.db)按文件名搜索,速度快 刚刚新建的文件, ...
- Redis-安装、启动
安装Redis 下载redis安装包http://download.redis.io/redis-stable.tar.gz 解压安装包tar xzf redis-stable.tar.gz 安装cd ...