leetcode 54.螺旋矩阵

思路:模拟。

根据题目要求模拟即可。

注意几点:首先需要判断下一个数能不能转向,还有需要判断什么时候旋转结束。

第一个问题可以用标志数组来标记已经遍历过的数组,同时我们在判断的时候一定是需要先判断一下下一个是否满足旋转条件,再去标记。

第二个问题可以用一个变量记录目前的遍历个数,一旦超过了数组的元素个数,那么就会停止。

复制代码
class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        boolean [][]flag=new boolean[110][110];
        int x=-1,y=0;
        List<Integer>list=new ArrayList<Integer>();
        int cnt=0;
        while(cnt!=matrix.length*matrix[0].length){
        while(!flag[y][x+1]&&x!=matrix[0].length-1){
            x++;
            flag[y][x]=true;
            list.add(matrix[y][x]);
            cnt++;
        }
        while(!flag[y+1][x]&&y!=matrix.length-1){
            y++;
            flag[y][x]=true;
            list.add(matrix[y][x]);
            cnt++;
        }
        while(x>0&&!flag[y][x-1]){
            x--;
            flag[y][x]=true;
            list.add(matrix[y][x]);
            cnt++;
        }
        while(y>0&&!flag[y-1][x]){
            y--;
            flag[y][x]=true;
            list.add(matrix[y][x]);
            cnt++;
        }
        }
        return list;
    }
}
相关推荐
圣保罗的大教堂21 小时前
leetcode 3531. 统计被覆盖的建筑 中等
leetcode
Data_agent21 小时前
1688获得1688店铺列表API,python请求示例
开发语言·python·算法
2301_764441331 天前
使用python构建的应急物资代储博弈模型
开发语言·python·算法
hetao17338371 天前
2025-12-11 hetao1733837的刷题笔记
c++·笔记·算法
Xの哲學1 天前
Linux电源管理深度剖析
linux·服务器·算法·架构·边缘计算
小飞Coding1 天前
一文讲透 TF-IDF:如何用一个向量“代表”一篇文章?
算法
算家计算1 天前
突然发布!GPT-5.2深夜来袭,3个版本碾压人类专家,打工人该怎么选?
算法·openai·ai编程
s09071361 天前
Xilinx FPGA 中ADC 数据下变频+ CIC 滤波
算法·fpga开发·fpga·zynq
TL滕1 天前
从0开始学算法——第十二天(KMP算法练习)
笔记·学习·算法
Math_teacher_fan1 天前
第二篇:核心几何工具类详解
人工智能·算法