Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,
Given the following matrix:

[
[ , , ],
[ , , ],
[ , , ]
]

You should return [1,2,3,6,9,8,7,4,5].


题解:还是找规律的题:设有四个变量Xs,Xe,Ys,Ye,如下图所示,它们分别代表当前还未处理的子矩阵的边界,初始为图一所示;运算过程的某一时刻如图二所示

那么螺旋输出就是不停的重复以下四个步骤,直到矩阵所有的元素被输出:

1.输出matrix[Xs->Xe][Ys],Ys++  即1,2,3

2.输出matrix[Xe][Ys->Ye],Xe--  即6,9

3.输出matrix[Xe->Xs][Ye],Ye--  即8,7

4.输出matrix[Ye->Ys][Xs],Xs++  即4

代码如下:

 #include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
vector<int> spiralOrder(vector<vector<int> > &matrix) {
vector<int> ans; if(matrix.size() == )
return ans; int Xs = ,Xe = matrix[].size()-,Ys = ,Ye = matrix.size()-;
int total = (Xe+) * (Ye+); for(int i = ;i <= total;){
for(int k = Xs;k <= Xe;k++)
{
ans.push_back(matrix[Ys][k]);
i++;
}
if(i >= total)
break;
else
Ys++; for(int k = Ys;k <= Ye;k++)
{
ans.push_back(matrix[k][Xe]);
i++;
}
if(i >= total)
break;
else
Xe--; for(int k = Xe;k >= Xs;k--)
{
ans.push_back(matrix[Ye][k]);
i++;
}
if(i >= total)
break;
else
Ye--; for(int k = Ye;k >= Ys;k--)
{
ans.push_back(matrix[k][Xs]);
i++;
}
if(i >= total)
break;
else
Xs++;
}
return ans;
}
};
int main(){
Solution s;
vector<vector<int> > m;
vector<int>temp(,);
m.push_back(temp); vector<int> ans(s.spiralOrder(m));
cout <<ans.size()<<endl;
}

这里学习到了怎么接受函数返回回来的向量,直接定义新的向量初始化为函数返回值就可以了,如代码65行所示。

【leetcode刷题笔记】Spiral Matrix的更多相关文章

  1. LeetCode刷题笔记和想法(C++)

    主要用于记录在LeetCode刷题的过程中学习到的一些思想和自己的想法,希望通过leetcode提升自己的编程素养 :p 高效leetcode刷题小诀窍(这只是目前对我自己而言的小方法,之后会根据自己 ...

  2. 【leetcode刷题笔记】Spiral Matrix II

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...

  3. 18.9.10 LeetCode刷题笔记

    本人算法还是比较菜的,因此大部分在刷基础题,高手勿喷 选择Python进行刷题,因为坑少,所以不太想用CPP: 1.买股票的最佳时期2 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. ...

  4. LeetCode刷题笔记 - 12. 整数转罗马数字

    学好算法很重要,然后要学好算法,大量的练习是必不可少的,LeetCode是我经常去的一个刷题网站,上面的题目非常详细,各个标签的题目都有,可以整体练习,本公众号后续会带大家做一做上面的算法题. 官方链 ...

  5. Leetcode刷题笔记(双指针)

    1.何为双指针 双指针主要用来遍历数组,两个指针指向不同的元素,从而协同完成任务.我们也可以类比这个概念,推广到多个数组的多个指针. 若两个指针指向同一数组,遍历方向相同且不会相交,可以称之为滑动窗口 ...

  6. 【leetcode刷题笔记】Set Matrix Zeroes

    Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. 题解:因为题 ...

  7. 【leetcode刷题笔记】Search a 2D Matrix

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  8. LeetCode刷题笔记(1-9)

    LeetCode1-9 本文更多是作为一个习题笔记,没有太多讲解 1.两数之和 题目请点击链接 ↑ 最先想到暴力解法,直接双循环,但是这样复杂度为n平方 public int[] twoSum(int ...

  9. leetcode刷题笔记

    (1)Best Time to Buy and Sell Stock Total Accepted: 10430 Total Submissions: 33800My Submissions Say ...

随机推荐

  1. zabbix客户端安装shadowscoks客户端监控访问google网站

    配置zabbix客户端配置文件 vim /etc/zabbix/zabbix_agentd.conf 添加  Include=/etc/zabbix/zabbix_agentd.d/ 添加脚本探测访问 ...

  2. jm解决乱码问题-参数化-数据库操作-文件上传下载

    jm解决乱码问题-参数化-数据库操作-文件上传下载 如果JM出果运行结果是乱码(解决中文BODY乱码的问题) 找到JM的安装路径,例如:C:\apache-jmeter-3.1\bin 用UE打开jm ...

  3. python单元测试框架 pyunit

    概况 系统要求 使用PyUnit构建自己的测试 安装 测试用例介绍 创建一个简单测试用例 复用设置代码:创建固件 包含多个测试方法的测试用例类 将测试用例聚合成测试套件 嵌套测试用例 测试代码的放置位 ...

  4. SlidingMenu+Fragment实现当前最流行的侧滑

    1 http://www.krislq.com/2013/03/android_case_slidingmenu_fragment/ 2 https://github.com/jfeinstein10 ...

  5. SQL Server中LIKE和PATINDEX的用法

    在SQL Server中,能使用通配符的只有2个:LIKE.PATINDEX. 不过LIKE支持2种通配符转义,无限制最全面:而PATINDEX只支持最简单的通配符转义([]转义),限制较多. LIK ...

  6. DASH简介及使用方法(FFmpeg, MP4Box)

    DASH 为什么选择DASH YouTube采用DASH!其网页端及移动端APP都使用了DASH.DASH的其他采用者包括:Netflix, Hulu, … 什么是DASH 一种服务端.客户端的流媒体 ...

  7. Selenium3.X 与 Javascript (Nodejs)

    传送门 # 官网网站 http://docs.seleniumhq.org/download/ # API DOC http://goo.gl/hohAut # 慕课网教程http://www.imo ...

  8. 探究 Redis 4 的 stream 类型

    redis 2 10 月初,Redis 搞了个大新闻.别紧张,是个好消息:Redis 引入了名为 stream 的新数据类型和对应的命令,大概会在年底正式发布到 4.x 版本中.像引入新数据类型这样的 ...

  9. IE hack 条件语句

    只在固定IE版本下执行 将以下代码放在head标签中,在script标签中写js即可 <!--[if IE 8]> <script> console.log("in ...

  10. Live555 中的客户端动态库.so的调用方式之一 程序中调用

    1.  打开动态链接库:    #include <dlfcn.h>    void *dlopen(const char *filename, int flag);    该函数返回操作 ...