题目:

给你一个 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. SQL语句之基础增删改查

    目录 插入:NSERT INTO 语句 删除:DELETE 语句 更新:UPDATE 语句 选择 SELECT 语句 SELECT DISTINCT 语句 相关子句.运算符.关键字 WHERE 子句 ...

  2. 基于python的多线程串口处理实例源码解析

    一 概念 1.简介 该源码可以让串口收发数据并行处理. 2.特性 使用了线程 使用了serial 使用了class 二 源码解析 1.串口读取固定数据函数: def uart_recv_header( ...

  3. Git进阶命令-reset

    之前有关Git,写过一片文章: Git五个常见问题及解决方法 一.reset命令使用场景 有时候我们提交了一些错误的或者不完善的代码,需要回退到之前的某个稳定的版本,面对这种情况有两种解决方法: 解决 ...

  4. Android WifiDisplay分析二:Wifi display连接过程

    简介 这一章中我们来看Wifi Display连接过程的建立,包含P2P的部分和RTSP的部分,首先来大致看一下Wifi Display规范相关的东西. HIDC: Human Interface D ...

  5. Performance Improvements in .NET 8 & 7 & 6 -- String【翻译】

    原文:https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8/#strings-arrays-and-spans ...

  6. django(cookie与session、中间件、auth模块)

    一 cookie与session 1 发展史及简介 """ 发展史 1.网站都没有保存用户功能的需求,所有用户访问返回的结果都是一样的 eg:新闻.博客.文章 2.出现了 ...

  7. 大模型应用开发:手把手教你部署并使用清华智谱GLM大模型

    部署一个自己的大模型,没事的时候玩两下,这可能是很多技术同学想做但又迟迟没下手的事情,没下手的原因很可能是成本太高,近万元的RTX3090显卡,想想都肉疼,又或者官方的部署说明过于简单,安装的时候总是 ...

  8. C#进阶篇

    ArrayList 1.Arraylist本质上是一个可以自动扩容的object数组 2.由于用万物之父来存储数据,自然存在装箱拆箱 3.当往其中进行值类型存储时就是在装箱,当将值类型对象取出来转换使 ...

  9. mybatis调用Oracle存储过程 带游标

    存储过程 CREATE OR REPLACE PROCEDURE proc_test2(p_id IN NUMBER, v_cur OUT SYS_REFCURSOR, p_result_code O ...

  10. .net 开源混淆器 ConfuserEx

    官网:http://yck1509.github.io/ConfuserEx/ 下载地址:https://github.com/yck1509/ConfuserEx/releases 使用参考:htt ...