力扣hot100之螺旋矩阵

python 复制代码
class Solution:
    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        # 用四个数对应4个遍历的方向[0, 1, 2, 3] - [右,下,左,上]
        go_state = 0 # 起始必须向右
        # record_matrix = [[0] * n for _ in range(m)]
        n_0, n_1, n_2, n_3 = 0, 0, 0, 0
        m, n = len(matrix), len(matrix[0])  
        go_num, limit_num = 0, len(matrix) * len(matrix[0])
        ans = []
        i, j = 0, 0
        while go_num < limit_num :
            ans.append(matrix[i][j])
            # record_matrix[i][j] = 1
            go_num += 1
            if go_state == 0:
                if j == n - 1 - n_1:
                    go_state = 1
                    i += 1
                    n_0 += 1
                else:
                    j += 1
            elif go_state == 1:
                if i == m - 1 - n_2:
                    go_state = 2                        
                    j -= 1
                    n_1 += 1
                else:
                    i += 1
            elif go_state == 2:
                if j == n_3:
                    go_state = 3                        
                    i -= 1
                    n_2 += 1
                else:
                    j -= 1
            else:
                if i == n_1:
                    go_state = 0                        
                    j += 1
                    n_3 += 1
                else:
                    i -= 1
        return ans
                       

个人解法:

1.用4个状态标记遍历的走向

2.当前状态的结束状态依赖于下一个状态的完全执行次数

3.用遍历的元素数量作为退出循环的临界

大佬们的解法:

这种解法和大佬的方法二思路一致,其方法一则将当前状态以及该状态下对当前坐标的动作融合起来了,可以参考:https://leetcode.cn/problems/spiral-matrix/solutions/2966229/liang-chong-fang-fa-jian-ji-gao-xiao-pyt-4wzk

相关推荐
Greedy Alg9 小时前
LeetCode 239. 滑动窗口最大值
数据结构·算法·leetcode
空白到白9 小时前
机器学习-KNN算法
人工智能·算法·机器学习
闪电麦坤9510 小时前
数据结构:排序算法的评判标准(Criteria Used For Analysing Sorts)
数据结构·算法·排序算法
爱coding的橙子10 小时前
每日算法刷题Day65:8.27:leetcode dfs11道题,用时2h30min
算法·leetcode·深度优先
不懂机器人10 小时前
linux网络编程-----TCP服务端并发模型(epoll)
linux·网络·tcp/ip·算法
Mercury_Lc11 小时前
【链表 - LeetCode】25. K 个一组翻转链表
数据结构·leetcode·链表
地平线开发者11 小时前
理想汽车智驾方案介绍 3|MoE+Sparse Attention 高效结构解析
算法·自动驾驶
小O的算法实验室12 小时前
2025年KBS SCI1区TOP,矩阵差分进化算法+移动网络视觉覆盖无人机轨迹优化,深度解析+性能实测
算法·论文复现·智能算法改进
艾莉丝努力练剑13 小时前
【C语言16天强化训练】从基础入门到进阶:Day 11
c语言·学习·算法
浩少70215 小时前
LeetCode-22day:多维动态规划
算法·leetcode·动态规划