leetcode_581. Shortest Unsorted Continuous Subarray

题目链接
在这里插入图片描述
这个题一开始想用双指针,用left和right移动,想的是遇到第一个逆序的位置就是left,其实这只是对题目中的2 6 4 8 10 9成立,假如说是个2 4 8 6 10,按照一开始的算法会把6的位置作为最左端,显然不对。

但是一开始雏形的思想中还是有一点正确的部分的,对2 6 4 5 10 12 11,记录left是6的位置后,5不仅要和4比,也要和6比,比4大比6小right就要更新到5,而处理10 12之后时,只要都比left大,就只需要保证之后的是递增的,遇到11时发生逆序right就要更新…

上述思路进行不下去就是因为没有利用到有序,只想相邻的元素比较看是否逆序,而且想一次性的确定出left和right,事实证明一次性还是很困难的,在一次循环中分两次确定也是一种方法。
查看官方题解后,重新整理一下思路:

将子数组排序之后整个数组就有序了,说明原数组可以分为ABC三部分,B部分[left,right]是导致原数组无序的,AC两部分分别有序,那么对A中每个数字,它肯定小于等于BC两部分中的每个数字,也就是小于等于BC中数字的最小值minn,最左端不能满足这个条件的位置就是left的位置,为了O(1)得到BC数字最小值,从i=n-1开始往小遍历,遇到比minn更小的num[i]就将minn更新,反之就更新left为此时的i。

同理,对C中的每个数字,他肯定大于等于AB中的每个数字,也就是大于等于AB中数字的最大值maxn,最右端不能满足这个条件的位置就是right的位置,为了O(1)得到AB中数字的最大值,从i=0开始往大遍历,遇到比maxn更大的num[i]就将maxn更新,反之就更新right为此时的i。

反思以上过程,其实用minn和maxn就完美的填充的自己一开始的思路中既要和这个比又要和前面的比的思想,这个利用的是ABC中每个数字关系的性质,其实一开始的思路中确定left之后就认为此时的left就是一个最值,后面一旦遇到比他小的则right就要更新,但是对6 10 9就需要多开情况10 9逆序的更新,如果记录的是6 10中的最大值,让9与之比较从而更新right到9,这样就统一起来了,本质还是利用上述ABC的关系。

总之吸取的教训就是,不一定非要一次性考虑确定left和right,寻找数之间的规律。

当然还有更容易想的就是先排序,然后对照原数组找到不同的部分,不再赘述。

class Solution {
public:
    int findUnsortedSubarray(vector<int>& nums) {
        int left=-1,minn=0x3f3f3f3f;
        int right=-1,maxn=-0x3f3f3f3f;
        int len=nums.size();
        for(int i=0;i<len;i++){
            if(nums[i]>=maxn){
                maxn=nums[i];
            }else{
                right=i;
            }
            if(nums[len-i-1]<=minn){
                minn=nums[len-i-1];
            }else{
                left=len-i-1;
            }
        }
        int res=(right==-1)?0:right-left+1;
        return res;
    }
};
内容概要:本文详细探讨了基于樽海鞘算法(SSA)优化的极限学习机(ELM)在回归预测任务中的应用,并与传统的BP神经网络、广义回归神经网络(GRNN)以及未优化的ELM进行了性能对比。首先介绍了ELM的基本原理,即通过随机生成输入层与隐藏层之间的连接权重及阈值,仅需计算输出权重即可快速完成训练。接着阐述了SSA的工作机制,利用樽海鞘群体觅食行为优化ELM的输入权重和隐藏层阈值,从而提高模型性能。随后分别给出了BP、GRNN、ELM和SSA-ELM的具体实现代码,并通过波士顿房价数据集和其他工业数据集验证了各模型的表现。结果显示,SSA-ELM在预测精度方面显著优于其他三种方法,尽管其训练时间较长,但在实际应用中仍具有明显优势。 适合人群:对机器学习尤其是回归预测感兴趣的科研人员和技术开发者,特别是那些希望深入了解ELM及其优化方法的人。 使用场景及目标:适用于需要高效、高精度回归预测的应用场景,如金融建模、工业数据分析等。主要目标是提供一种更为有效的回归预测解决方案,尤其是在处理大规模数据集时能够保持较高的预测精度。 其他说明:文中提供了详细的代码示例和性能对比图表,帮助读者更好地理解和复现实验结果。同时提醒使用者注意SSA参数的选择对模型性能的影响,建议进行参数敏感性分析以获得最佳效果。
《芋道开发指南文档-2023-10-27更新》是针对软件开发者和IT专业人士的一份详尽的资源集合,旨在提供最新的开发实践、范例代码和最佳策略。这份2023年10月27日更新的文档集,包含了丰富的模板和素材,帮助开发者在日常工作中提高效率,保证项目的顺利进行。 让我们深入探讨这份文档的可能内容。"芋道"可能是一个开源项目或一个专业的技术社区,其开发指南涵盖了多个方面,例如: 1. **编程语言指南**:可能包括Java、Python、JavaScript、C++等主流语言的编码规范、最佳实践以及常见问题的解决方案。 2. **框架与库的应用**:可能会讲解React、Vue、Angular等前端框架,以及Django、Spring Boot等后端框架的使用技巧和常见应用场景。 3. **数据库管理**:涵盖了SQL语言的基本操作,数据库设计原则,以及如何高效使用MySQL、PostgreSQL、MongoDB等数据库系统。 4. **版本控制**:详细介绍了Git的工作流程,分支管理策略,以及与其他开发工具(如Visual Studio Code、IntelliJ IDEA)的集成。 5. **持续集成与持续部署(CI/CD)**:包括Jenkins、Travis CI、GitHub Actions等工具的配置和使用,以实现自动化测试和部署。 6. **云服务与容器化**:可能涉及AWS、Azure、Google Cloud Platform等云计算平台的使用,以及Docker和Kubernetes的容器化部署实践。 7. **API设计与测试**:讲解RESTful API的设计原则,Swagger的使用,以及Postman等工具进行API测试的方法。 8. **安全性与隐私保护**:涵盖OAuth、JWT认证机制,HTTPS安全通信,以及防止SQL注入、
该是一个在 Kaggle 上发布的数据集,专注于 2024 年出现的漏洞(CVE)信息。以下是关于该数据集的详细介绍:该数据集收集了 2024 年记录在案的各类漏洞信息,涵盖了漏洞的利用方式(Exploits)、通用漏洞评分系统(CVSS)评分以及受影响的操作系统(OS)。通过整合这些信息,研究人员和安全专家可以全面了解每个漏洞的潜在威胁、影响范围以及可能的攻击途径。数据主要来源于权威的漏洞信息平台,如美国国家漏洞数据库(NVD)等。这些数据经过整理和筛选后被纳入数据集,确保了信息的准确性和可靠性。数据集特点:全面性:涵盖了多种操作系统(如 Windows、Linux、Android 等)的漏洞信息,反映了不同平台的安全状况。实用性:CVSS 评分提供了漏洞严重程度的量化指标,帮助用户快速评估漏洞的优先级。同时,漏洞利用信息(Exploits)为安全研究人员提供了攻击者可能的攻击手段,有助于提前制定防御策略。时效性:专注于 2024 年的漏洞数据,反映了当前网络安全领域面临的新挑战和新趋势。该数据集可用于多种研究和实践场景: 安全研究:研究人员可以利用该数据集分析漏洞的分布规律、攻击趋势以及不同操作系统之间的安全差异,为网络安全防护提供理论支持。 机器学习与数据分析:数据集中的结构化信息适合用于机器学习模型的训练,例如预测漏洞的 CVSS 评分、识别潜在的高危漏洞等。 企业安全评估:企业安全团队可以参考该数据集中的漏洞信息,结合自身系统的实际情况,进行安全评估和漏洞修复计划的制定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值