剑指offer-面试题29-顺时针打印矩阵-矩阵
/*
题目:
输入一个矩阵,按照从外到内顺时针的顺序依次打印每一个数字。
*/
/*
思路:
1、将打印矩阵看作是打印一个个从外向内的环。
2、每一个环都有一个起始节点,起始节点的坐标*2小于行数和列数。
3、对于每一个环,分别打印从左到右,从上到下,从右到左,从下到上的数字。
*/
#include<iostream>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stdio.h>
#include<vector> using namespace std;
//res传引用
void printMatrixs(vector<vector<int> > mat,int rows,int columns,int start,vector<int> &res){
int right = columns - start;
int down = rows -start; //从左到右打印一行
for(int i = start; i < right; i++){
res.push_back(mat[start][i]);
}
//从上到下打印一列
for(int i = start + 1; i < down; i++){
res.push_back(mat[i][right-1]);
}
//从右到左打印一行,不和从右到左打印的行重复
if(down - 1 != start){
for(int i = right - 2; i >= start; i--){
res.push_back(mat[down-1][i]);
}
} //从下到上打印一列,不和从上到下打印的列重复
if(start != right - 1){
for(int i = down - 2; i > start; i--){
res.push_back(mat[i][start]);
}
} } vector<int> clockwisePrint(vector<vector<int>> mat, int rows, int columns) {
if(rows == 0 || columns == 0) throw("invalid parameters");
int start = 0;
vector<int> res;
while(start*2 < rows && start*2 <columns){
printMatrixs(mat,rows,columns,start,res);
start++;
}
return res;
} int main(){
vector<vector<int>> mat = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
vector<int> res = clockwisePrint(mat,4,4);
for(int i = 0; i < res.size(); i++){
cout<<res[i]<<" ";
}
}
剑指offer-面试题29-顺时针打印矩阵-矩阵的更多相关文章
- 剑指Offer:面试题20——顺时针打印矩阵(java实现)
题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数 字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1, ...
- 剑指 offer面试题20 顺时针打印矩阵
[题目描述] 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1, ...
- Leetcode - 剑指offer 面试题29:数组中出现次数超过一半的数字及其变形(腾讯2015秋招 编程题4)
剑指offer 面试题29:数组中出现次数超过一半的数字 提交网址: http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163 ...
- 剑指Offer - 九度1391 - 顺时针打印矩阵
剑指Offer - 九度1391 - 顺时针打印矩阵2013-11-24 04:55 题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 ...
- 剑指offer面试题5 从头到尾打印链表(java)
注:(1)这里体现了java数据结构与C语言的不同之处 (2)栈的操作直接利用stack进行 package com.xsf.SordForOffer; import java.util.Stack; ...
- 剑指offer面试题5 从头到尾打印链表(c)
- 剑指offer十九之顺时针打印矩阵
一.题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2, ...
- 剑指offer——面试题29:顺时针打印矩阵
#include"iostream" #include"stdio.h" using namespace std; void PrintMatrixInCirc ...
- 剑指Offer面试题:11.打印1到最大的n位数
一.题目:打印1到最大的n位数 题目:输入数字n,按顺序打印出从1最大的n位十进制数.比如输入3,则打印出1.2.3一直到最大的3位数即999. 二.不同的解法 2.1 不假思索的解法 最容易想到的办 ...
- 【剑指offer】题目20 顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出 ...
随机推荐
- BZOJ1301 字符加密Cipher (后缀数组)
题意: 把所有循环字符串的后缀排名,输出这n<1e5个排名的最后一个字符 思路: 将该字符串拼接,按照排名顺序输出后缀开头在前一个字符串的情况中的“最后一个字符”即可 代码: #include& ...
- Android Studio 学习笔记(二):布局简介和xmlns说明
初学Android Studio,是在b站看的教程视频,这里的笔记也是以其为基础的,个人强烈安利: [天哥]Android开发视频教程最新版 Android Studio开发 Android 布局简介 ...
- Go语言实现:【剑指offer】第一个只出现一次的字符位置
该题目来源于牛客网<剑指offer>专题. 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1( ...
- zabbix-proxy配置文件参数说明
配置文件路径: /etc/zabbix/zabbix_proxy.conf Server=10.0.0.10 #<===指定zabbix server的ip地址或主机名 Hostname=zab ...
- 【算法总结】图论/dp-动态规划 大总结
写于一只蹲在角落的蒟蒻-Z__X... 2020.2.7,图论和 \(dp\) 终于告一段落.蓦然回首,好似已走过许多...不曾细细品味,太多太多又绵延不断地向我涌来... 谨以此纪念 逝去 的图论和 ...
- 对C语言整数类型的一点理解
作者:autogeek 原文链接:http://www.cnblogs.com/autogeek/p/4321635.html 1.先从一个列子引出问题: //sample_1 unsigned ch ...
- NPM install -save 和 -save-dev 区别
最近在写Node程序的时候,突然对 npm install 的-save和-save-dev 这两个参数的使用比较混乱.其实博主在这之前对这两个参数的理解也是模糊的,各种查资料和实践后对它们之间的异同 ...
- C语言基础五 数组的应用
.根据用户输入的10人成绩并将其保存到数组中,求最高成绩,最低成绩和平均成绩 int scoure[10];//存储10个数据的数组 int i; int sum;//总成绩 int max,min, ...
- C#个推SDK推送安卓+iOS
下载个推SDK,找到这两个dll直接引用. using引用 using com.gexin.rp.sdk.dto; using com.igetui.api.openservice; using co ...
- Mybatis注解开发多表一对一,一对多
Mybatis注解开发多表一对一,一对多 一对一 示例:帐户和用户的对应关系为,多个帐户对应一个用户,在实际开发中,查询一个帐户并同时查询该账户所属的用户信息,即立即加载且在mybatis中表现为一对 ...