题目:

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

示例 1:

提示:

m == matrix.length
n == matrix[i].length
1 <= m, n <= 10
-100 <= matrix[i][j] <= 100
通过次数251,880提交次数517,676

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/spiral-matrix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

借助四个顶点(left、right、upper、bottom)对未访问的区域进行限制,循环退出的条件就是res.size()== m *n

 代码:

 1 class Solution {
2 public List<Integer> spiralOrder(int[][] matrix) {
3 List<Integer> res = new ArrayList<Integer>();
4 int m = matrix.length,n = matrix[0].length;
5 int left = 0, right = n -1, upper = 0, bottom = m -1;
6 while(res.size() < m*n){
7 //从左往右遍历
8 if(upper <= bottom){
9 for(int col = left; col <= right; col++){
10 res.add(matrix[upper][col]);
11 }
12 upper++;
13 }
14 //从上往下遍历
15 if(left <= right){
16 for(int row = upper; row <= bottom; row++){
17 res.add(matrix[row][right]);
18 }
19 right--;
20 }
21 //从右往左遍历
22 if(upper <= bottom){
23 for(int col = right; col >= left; col--){
24 res.add(matrix[bottom][col]);
25 }
26 bottom--;
27 }
28 //从下往上
29 if(left <= right){
30 for(int row = bottom; row >= upper; row--){
31 res.add(matrix[row][left]);
32 }
33 left++;
34 }
35 }
36 return res;
37 }
38 }

 小知识:

1.计算字符串的长度

int len= str.length();

2.计算数组的长度

int length = nums.length;

3.size()是针对泛型集合List,相比于数组,数组是静态的在初始化的时候JVM就会为其分配相应的内存大小,但是List是动态的,其没有length属性,所以java专门为其提供了size()方法来计算集合的长度大小。

List<Integer> res = new ArrayList<Integer>();
int n = res.size();

力扣54(java)-螺旋矩阵(中等)的更多相关文章

  1. 代码随想录训练营day 3|59.螺旋矩阵II 加 数组总结篇

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

  2. Java实现 LeetCode 54 螺旋矩阵

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

  3. LeetCode:螺旋矩阵【54】

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

  4. Leetcode 54:Spiral Matrix 螺旋矩阵

    54:Spiral Matrix 螺旋矩阵 Given a matrix of m x n elements (m rows, n columns), return all elements of t ...

  5. Java 第十一届 蓝桥杯 省模拟赛 螺旋矩阵

    螺旋矩阵 题目 问题描述 对于一个 n 行 m 列的表格,我们可以使用螺旋的方式给表格依次填上正整数,我们称填好的表格为一个螺旋矩阵. 例如,一个 4 行 5 列的螺旋矩阵如下: 1 2 3 4 5 ...

  6. LeetCode 54. Spiral Matrix(螺旋矩阵)

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

  7. 螺旋矩阵 java实现(待消化)

    import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/4 17:13 * @description ...

  8. 【LeetCode-面试算法经典-Java实现】【059-Spiral Matrix II(螺旋矩阵II)】

    [059-Spiral Matrix II(螺旋矩阵II)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given an integer n, generate a ...

  9. PAT(B) 1050 螺旋矩阵(Java:24分)

    题目链接:1050 螺旋矩阵 (25 point(s)) 题目描述 本题要求将给定的 N 个正整数按非递增的顺序,填入"螺旋矩阵".所谓"螺旋矩阵",是指从左上 ...

  10. 力扣—set matrix zeroes (矩阵置零) python实现

    题目描述: 中文: 给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0.请使用原地算法. 英文: Given a m x n matrix, if an eleme ...

随机推荐

  1. Go | Gin 解决跨域问题跨域配置

    Go | Gin 解决跨域问题跨域配置 目录 一.关于跨域解决方案 二.使用步骤 1. 编写一个中间件 2. 使用 3. 注意事项 一.关于跨域解决方案 关于跨域的解决方法,大部分可以分为 2 种 n ...

  2. Inno setup 脚本判断 Microsoft Visual C++ Redistributable 不同版本区别

    有个需要是需要在安装包安装初始化时安装 Microsoft Visual c++ 2013 Redistributable 也就是判断软件安装前需不需要运行 vcredist_x64.exe 和 VC ...

  3. drf(Book序列化练习、user表练习)

    一. APIView版本 1. models.py from django.db import models # Create your models here. class CommonField( ...

  4. 关于volatile与指令重排序的探讨

    写在开头 在之前的学习我们了解到,为了充分利用缓存,提高程序的执行速度,编译器在底层执行的时候,会进行指令重排序的优化操作,但这种优化,在有些时候会带来 有序性 的问题. 那何为有序性呢?我们可以通俗 ...

  5. 三维模型OBJ格式轻量化顶点压缩主要技术方法分析

    三维模型OBJ格式轻量化顶点压缩主要技术方法分析 三维模型的OBJ格式轻量化中,顶点压缩是一项重要的技术方法,用于减小模型文件的大小.以下是关于三维模型OBJ格式轻量化顶点压缩的主要技术方法的分析: ...

  6. 记录-VueJs中如何使用Teleport组件

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在DOM结构相对比较复杂,层级嵌套比较深的组件内,需要根据相对应的模块业务处理一些逻辑,该逻辑属于当前组件 但是从整个页面应用的视图上看, ...

  7. C# 按指定宽高缩放图片

    /// <summary> /// 按指定宽高缩放图片 /// </summary> /// <param name="image">原图片&l ...

  8. C#OpenCvSharp YOLO v3 Demo

    效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.D ...

  9. Nancy如何接收POST过来的Json数据

    当Nancy版本为2.0.0.0时 string postData = Request.Body.AsString; 当Nancy版本为1.4.5.0时 自己写一个扩展方法,代码如下 /// < ...

  10. 运行xxl-job,整合xxl-job至jeecg-boot项目

    1.前言:xxl-job是一个分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 源码仓库地址:https://gitee.co ...