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

Example:

  1. Input: 3
  2. Output:
  3. [
  4. [ 1, 2, 3 ],
  5. [ 8, 9, 4 ],
  6. [ 7, 6, 5 ]
  7. ]
  1. class Solution {
  2. public:
  3. vector<vector<int>> generateMatrix(int n) {
  4.  
  5. vector<vector<int>> res(n,vector<int>(n,));
  6. if (n == ) return res;
  7. int i = ;
  8. int rowS = ,rowE = n - ,colS = ,colE = n -;
  9. while(i <= n * n)
  10. {
  11. for (int j = colS;j <= colE;++j)
  12. {
  13. res[rowS][j] = i++;
  14. }
  15. rowS++;
  16.  
  17. for (int j = rowS;j <= rowE;++j)
  18. {
  19. res[j][colE] = i++;
  20. }
  21. colE--;
  22.  
  23. for (int j = colE;j >= colS;--j)
  24. {
  25. res[rowE][j] = i++;
  26. }
  27. rowE--;
  28.  
  29. for (int j = rowE;j >= rowS;--j)
  30. {
  31. res[j][colS] = i++;
  32. }
  33. colS++;
  34. }
  35. return res;
  36. }
  37. };

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

Example 1:

  1. Input:
  2. [
  3. [ 1, 2, 3 ],
  4. [ 4, 5, 6 ],
  5. [ 7, 8, 9 ]
  6. ]
  7. Output: [1,2,3,6,9,8,7,4,5]

Example 2:

  1. Input:
  2. [
  3. [1, 2, 3, 4],
  4. [5, 6, 7, 8],
  5. [9,10,11,12]
  6. ]
  7. Output: [1,2,3,4,8,12,11,10,9,5,6,7]
  1. class Solution {
  2. public:
  3. vector<int> spiralOrder(vector<vector<int>>& matrix) {
  4. int m = matrix.size(), n = m ? matrix[].size() : , u = , d = m - , l = , r = n - , p = ;
  5. vector<int> order(m * n);
  6. while (u <= d && l <= r) {
  7. for (int col = l; col <= r; col++) {
  8. order[p++] = matrix[u][col];
  9. }
  10. if (++u > d) {
  11. break;
  12. }
  13. for (int row = u; row <= d; row++) {
  14. order[p++] = matrix[row][r];
  15. }
  16. if (--r < l) {
  17. break;
  18. }
  19. for (int col = r; col >= l; col--) {
  20. order[p++] = matrix[d][col];
  21. }
  22. if (--d < u) {
  23. break;
  24. }
  25. for (int row = d; row >= u; row--) {
  26. order[p++] = matrix[row][l];
  27. }
  28. if (l++ > r) {
  29. break;
  30. }
  31. }
  32. return order;
  33. }
  34. };

54. Spiral Matrix && 59. Spiral Matrix II的更多相关文章

  1. Leetcode 54. Spiral Matrix & 59. Spiral Matrix II

    54. Spiral Matrix [Medium] Description Given a matrix of m x n elements (m rows, n columns), return ...

  2. leetcode 54. Spiral Matrix 、59. Spiral Matrix II

    54题是把二维数组安卓螺旋的顺序进行打印,59题是把1到n平方的数字按照螺旋的顺序进行放置 54. Spiral Matrix start表示的是每次一圈的开始,每次开始其实就是从(0,0).(1,1 ...

  3. leetcode@ [54/59] Spiral Matrix & Spiral Matrix II

    https://leetcode.com/problems/spiral-matrix/ Given a matrix of m x n elements (m rows, n columns), r ...

  4. 59. Spiral Matrix && Spiral Matrix II

    Spiral Matrix Given a matrix of m x n elements (m rows, n columns), return all elements of the matri ...

  5. [LeetCode] 59. Spiral Matrix II 螺旋矩阵 II

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

  6. 54. 59. Spiral Matrix

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

  7. LeetCode第[54]题(Java):Spiral Matrix

    题目:螺旋矩阵 难度:Medium 题目内容: Given a matrix of m x n elements (m rows, n columns), return all elements of ...

  8. LeetCode 54. 螺旋矩阵(Spiral Matrix) 剑指offer-顺时针打印矩阵

    题目描述 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, ...

  9. 矩阵螺旋遍历Spiral Matrix,Spiral Matrix2

    SpiralMatrix: Given a matrix of m x n elements (m rows, n columns), return all elements of the matri ...

随机推荐

  1. Day 06 作业

    目录 Python基础实战之猜数字游戏 Python进阶实战之三级菜单 Python基础实战之猜数字游戏 给定数字,用户可以猜三次年龄 数字猜对,让用户选择两次奖励 用户选择奖励后可以退出 impor ...

  2. 【JS】310- 使用 focusout 事件,解决 iOS 键盘收起不归位问题

    点击上方"前端自习课"关注,学习起来~ ,0);            }        }, 这时,我们问题得到解决了,当从输入框输入内容,然后点击键盘的完成收起键盘,效果符合我 ...

  3. mini_magick上传图片

    rails上传图片需要用到的gem: gem 'carrierwave'gem 'mini_magick' 在项目Gemfil中添加上面的两个gem,然后bundle install 然后创建modl ...

  4. 【spring boot】配置信息

    ======================================================================== 1.feign 超时配置 2.上传文件大小控制 3.J ...

  5. Provider模式应用demo

    参考ObjectPool对象池设计原理还原一个简易的Provider模式. using System; using System.Dynamic; using System.Reflection.Me ...

  6. Maven使用教程三:maven的生命周期及插件机制详解

    前言 今天这个算是学习Maven的一个收尾文章,里面内容不局限于标题中提到的,后面还加上了公司实际使用的根据profile配置项目环境以及公司现在用的archetype 模板等例子. 后面还会总结一个 ...

  7. Ajax 的基本使用

    Ajax简介 一门异步的加载技术,局部刷新 异步加载,可以在不重载整个网页的前提下,进行局部刷新 分为原生和JQ两种 JSON数据格式 Json对象转字符串: JSON.stringify() 字符串 ...

  8. 由于ie浏览器ajax缓存 导致layui table表格重载失败的解决办法

    where: { time:new Date()//增加一个数据接口的额外参数→时间戳 }

  9. Linux上用IP转发使内部网络连接互联网

    IP转发的概念: 使 Linux 机器像路由器一样将数据从一个网络发送到另一个网络.所以,它能作为一个路由器或者代理服务器,实现将一个连接的互联网或者网络连接共享给多个客户端机器. 1. 启用 IPv ...

  10. 阿里巴巴供应链平台事业部2020届秋招-Java工程师

    阿里巴巴供应链平台事业部,2020届秋季校园招聘开始啦!Java开发工程师虚位以待,机会难得,占坑抓紧. 入职就发师兄,一对一师兄辅导. 在这里,你将有机会接触阿里集团的所有数据库.中间件等基础设施. ...