54. 螺旋矩阵

问题描述

  1. 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
  2. 示例 1:
  3. 输入:
  4. [
  5. [ 1, 2, 3 ],
  6. [ 4, 5, 6 ],
  7. [ 7, 8, 9 ]
  8. ]
  9. 输出: [1,2,3,6,9,8,7,4,5]
  10. 示例 2:
  11. 输入:
  12. [
  13. [1, 2, 3, 4],
  14. [5, 6, 7, 8],
  15. [9,10,11,12]
  16. ]
  17. 输出: [1,2,3,4,8,12,11,10,9,5,6,7]

问题分析

这道题也是从最外层往最内层循环,定义四个边界up,down,left,right记录目前层数的位置即可。

代码

  1. class Solution {
  2. public:
  3. vector<int> spiralOrder(vector<vector<int>>& matrix) {
  4. int m = matrix.size();
  5. vector<int> ans;
  6. if(m==0)return ans;
  7. int n = matrix[0].size();
  8. ans.resize(m*n);
  9. int index = 0,up = 0,down = m - 1,left = 0,right = n - 1,i;
  10. while(1)
  11. {
  12. for(i = left; i <= right; ++i)ans[index++] = matrix[up][i];//从左往右遍历
  13. if(++up > down)break;
  14. for(i = up; i <= down; ++i)ans[index++] = matrix[i][right];//从上往下遍历
  15. if(--right < left)break;
  16. for(i = right; i >= left; --i)ans[index++] = matrix[down][i];//从右往左遍历
  17. if(--down < up)break;
  18. for(i = down; i >= up; --i)ans[index++] = matrix[i][left];//从下往上遍历
  19. if(++left > right)break;
  20. }
  21. return ans;
  22. }
  23. };

59. 螺旋矩阵 II

问题描述

  1. 给定一个正整数 n,生成一个包含 1  n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
  2. 示例:
  3. 输入: 3
  4. 输出:
  5. [
  6. [ 1, 2, 3 ],
  7. [ 8, 9, 4 ],
  8. [ 7, 6, 5 ]
  9. ]

代码

  1. class Solution {
  2. public:
  3. vector<vector<int>> generateMatrix(int n) {
  4. vector<vector<int>> ans;
  5. if(n <= 0) return ans;
  6. ans.resize(n);
  7. int i,j,up = 0,down = n-1,left = 0,right = n-1,var = 0;
  8. for(i = 0;i < n; i++)ans[i].resize(n);
  9. while(true)
  10. {
  11. for(i = left;i <= right; ++i)ans[up][i] = ++var;
  12. if(++up > down)break;
  13. for(i = up; i <= down; ++i)ans[i][right] = ++var;
  14. if(--right < left)break;
  15. for(i = right; i >= left; --i)ans[down][i]=++var;
  16. if(--down < up)break;
  17. for(i = down; i >= up; --i)ans[i][left] = ++var;
  18. if(++left > right)break;
  19. }
  20. return ans;
  21. }
  22. };

leetcode 54. 螺旋矩阵 及 59. 螺旋矩阵 II的更多相关文章

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

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

  2. LeetCode:螺旋矩阵||【59】

    LeetCode:螺旋矩阵||[59] 题目描述 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ...

  3. [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 ...

  4. 【LeetCode】59.螺旋矩阵II

    59.螺旋矩阵II 知识点:数组: 题目描述 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix . 示例 输入:n = 3 ...

  5. Java实现 LeetCode 59 螺旋矩阵 II

    59. 螺旋矩阵 II 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵. 示例: 输入: 3 输出: [ [ 1, 2, 3 ], [ 8, 9, 4 ...

  6. leetcode腾讯精选练习之螺旋矩阵(八)

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

  7. 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 ...

  8. Leetcode 566. Reshape the Matrix 矩阵变形(数组,模拟,矩阵操作)

    Leetcode 566. Reshape the Matrix 矩阵变形(数组,模拟,矩阵操作) 题目描述 在MATLAB中,reshape是一个非常有用的函数,它可以将矩阵变为另一种形状且保持数据 ...

  9. 实现两个N*N矩阵的乘法,矩阵由一维数组表示

    实现两个N*N矩阵的乘法,矩阵由一维数组表示. 先介绍一下矩阵的加法: void Add(int rows, int cols) { ;i<rows;i++) { ;j<cols;j++) ...

随机推荐

  1. springmvc整合redis

    1.引入依赖 2.在resources包下创建配置文件redis-context.xml 3.在spring-servlet文件引入redis配置文件

  2. 1、学习算法和刷题的框架思维——Go版

    前情提示:Go语言学习者.本文参考https://labuladong.gitee.io/algo,代码自己参考抒写,若有不妥之处,感谢指正 关于golang算法文章,为了便于下载和整理,都已开源放在 ...

  3. 直接在filter过滤器代码里加org.apache.struts2.ServletActionContext.getRequest()会出现空指针情况

    直接在filter过滤器代码里加org.apache.struts2.ServletActionContext.getRequest()获得request对象请注意啦,会出现空指针情况 请关注此处:

  4. UEditor富文本判断是否输入内容

    <textarea name="CONTENT" id="CONTENT" maxlength="4000" style=" ...

  5. 分享一下java需要的一些技术

    1.前言 you are 大哥,老衲很佩服你们_.还是一样的,有我联系方式的人,哪些半吊子不知道要学习哪些技术,一天让我整知识点,老衲也有事情做的,哪有那么多时间来一直搞知识点啊,我的博客更新很慢的, ...

  6. 【LeetCode】294. Flip Game II 解题报告 (C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 记忆化搜索 日期 题目地址:https://leetc ...

  7. 【剑指Offer】数组中重复的数字 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 Set 快慢指针 日期 题目地址:https://leetcod ...

  8. 【LeetCode】93. Restore IP Addresses 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 回溯法 日期 题目地址:https://leetco ...

  9. 第十个知识点:RSA和强RSA问题有什么区别?

    第十个知识点:RSA和强RSA问题有什么区别 这个密码学52件事数学知识的第一篇,也是整个系列的第10篇.这篇介绍了RSA问题和Strong-RSA问题,指出了这两种问题的不同之处. 密码学严重依赖于 ...

  10. Java初学者作业——编写 Java 程序,用户输入 3 个操作数,分别求出最大值、最小值和平均值。

    返回本章节 返回作业目录 需求说明: 编写 Java 程序,用户输入 3 个操作数,分别求出最大值.最小值和平均值. 实现思路: 定义 Java 类,定义 3 个方法,用来求 3 个数字的最大值.最小 ...