54. 螺旋矩阵

题目来源:

        leetcode题目:54. 螺旋矩阵 - 力扣(LeetCode)

解题思路:

       遍历以matrix[i][i] 为起点的长方形,记录经过的节点。注意以下两点:

        1.不要在遍历长方形时重复遍历节点

        2.当所给数组不为正方形时,注意 i 的取值范围,matrix[i][i] 可能已经遍历过了。

解题代码:

#python3
class Solution:
    def getSize(m:int,n:int)->int:
        m=m//2+1 if m&1==1 else m//2
        n=n//2+1 if n&1==1 else n//2
        return min(m,n)

    def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
        res=[]
        m=len(matrix)
        n=len(matrix[0])
        size=Solution.getSize(m,n)
        for i in range(size):    #从 matrix[i][i]开始遍历
            for j in range(i,n-i):   #横向从左往右 [i][i]->[i][n-i-1]
                res.append(matrix[i][j])
            for j in range(i+1,m-i):   #纵向从上到下 [i][n-i-1]->[n-i-1][n-i-1]
                res.append(matrix[j][n-i-1])
            if m-i-1!=i:
                for j in range(n-i-2,i-1,-1):        #横向从右到左[n-i-1][n-i-1]->[n-i-1][i]
                    res.append(matrix[m-i-1][j])
            if n-i-1!=i:
                for j in range(m-i-2,i,-1):            #纵向从下到上 [n-i-1][i]->[i][i]
                    res.append(matrix[j][i])
        return res
 

总结:

       用方向数组+模拟可能会简单一点。

        官方题解给出的就是这两种解法。不过他按层遍历时是记录上下左右四个节点,逐渐向内收缩。


内容概要:本文档详细介绍了如何使用MATLAB实现粒子群优化算法(PSO)优化极限学习机(ELM)进行时间序列预测的项目实例。项目背景指出,PSO通过模拟鸟群觅食行为进行全局优化,ELM则以其快速训练和强泛化能力著称,但对初始参数敏感。结合两者,PSO-ELM模型能显著提升时间序列预测的准确性。项目目标包括提高预测精度、降低训练时间、处理复杂非线性问题、增强模型稳定性和鲁棒性,并推动智能化预测技术的发展。面对数据质量问题、参数优化困难、计算资源消耗、模型过拟合及非线性特征等挑战,项目采取了数据预处理、PSO优化、并行计算、交叉验证等解决方案。项目特点在于高效的优化策略、快速的训练过程、强大的非线性拟合能力和广泛的适用性。; 适合人群:对时间序列预测感兴趣的研究人员、数据科学家以及有一定编程基础并希望深入了解机器学习优化算法的工程师。; 使用场景及目标:①金融市场预测,如股票走势预测;②气象预报,提高天气预测的准确性;③交通流量预测,优化交通管理;④能源需求预测,确保能源供应稳定;⑤医疗健康预测,辅助公共卫生决策。; 其他说明:文档提供了详细的模型架构描述和MATLAB代码示例,涵盖数据预处理、PSO优化、ELM训练及模型评估等关键步骤,帮助读者全面理解和实践PSO-ELM模型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值