力扣题库刷题笔记581-最短无序连续子数组

news2024/9/27 19:21:53

1、题目如下:

2、题解代码实现:

        浅看题解,解题思路和本人接替思路一毛一样,奈何没有想到用双指针,在代码实现上也存在问题。当知道用双指针的时候,本题也变得相对简单。思路如下:

        a、输入仅存在两种场景,数组本身是升序排列的和数组存在乱序的,存在乱序的意思就是存在驼峰元素nums[n] < nums[n-1],此时整个数组就不是纯粹升序的。 

        b、当数组乱序时,找到数组第一个、最后一个驼峰元素,他们之间的长度就是答案

        c、当数组升序排列时,结果为0

        代码如下:

class Solution:

    def findUnsortedSubarray(self, nums: List[int]) -> int:

        nums_compare = sorted(nums)             #将源列表排序

        ans = 0                                 #初始化输出结果为0(当列表本身就是升序的时候输出结果也是0)

        left = 0                                #左指针

        right = len(nums_compare) - 1           #右指针

        while left < right:

            #当左指针相等时,左指针右移一位

            if nums[left] == nums_compare[left]:

                left += 1

            #当右指针相等时,右指针左移一位

            if nums[right] == nums_compare[right]:

                right -= 1

            #当左右指针都不相等时,输出结果,退出循环

            if nums[left] != nums_compare[left] and nums[right] != nums_compare[right]:

                ans = right - left + 1

                break

        return ans

        以上代码,如果感觉在if条件里面少判断了数组是否升序的话,是由于在声明ans的时候默认数组时升序,所以初始化为0。如果便于理解可以参考以下代码:

         代码如下:

class Solution:

    def findUnsortedSubarray(self, nums: List[int]) -> int:

        nums_compare = sorted(nums)             #将源列表排序

        left = 0                                #左指针

        right = len(nums_compare) - 1           #右指针

        while left < right:

            #当左指针相等时,左指针右移一位

            if nums[left] == nums_compare[left]:

                left += 1

            #当右指针相等时,右指针左移一位

            if nums[right] == nums_compare[right]:

                right -= 1

            #当左右指针都不相等时,输出结果,退出循环

            if nums[left] != nums_compare[left] and nums[right] != nums_compare[right]:

                break

        if left >= right:

            return 0

        return right - left + 1

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/487423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue条件渲染v-if和v-show

条件渲染v-if和v-show <div id"root"><!-- <div v-if"true">v-if</div>--> <!-- <div v-show"true">v-show</div>--> n:{{n}}<button click"n">点击n</button><div v…

法规标准-UN R152标准解读

UN R152是做什么的&#xff1f; UN R152 全名为关于M1和N1型机动车高级紧急制动系统&#xff08;AEBS&#xff09;型式认证的统一规定&#xff0c;是联合国对于M1和N1型车辆AEBS系统认证的要求说明&#xff0c;当满足其要求内容时&#xff0c;才可通过联合国的认证&#xff0c…

数字化转型导师坚鹏:面向数字化转型的大数据顶层设计实践

面向数字化转型的大数据顶层设计实践 课程背景&#xff1a; 数字化背景下&#xff0c;很多企业存在以下问题&#xff1a; 不清楚大数据思维如何建立&#xff1f; 不清楚企业大数据分析方法&#xff1f; 不了解大数据应用成功案例&#xff1f; 课程特色&#xff1a; …

(转载)01.Matplotlib 图像结构-figure()axes设置

​概要&#xff1a;介绍matplotlib 绘制图像起手&#xff0c; figure() 的设置&#xff0c; axes() 的设置。主要的内容可移步最后部分的总结。 04 Matplotlib 总结 Matplotlib 提供了matplotlib.figure图形类模块&#xff0c;它包含了创建图形对象的方法。通过调用 pyplot 模…

Hive3面试基础

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、基本知识Hive31.表的类型和表的存储格式a)b)c)创建表i&#xff09;ii&#xff09; 2.表 二、使用步骤1.引入库2.读入数据 总结 前言 面试准备之Hive 回顾…

个人代码管理

项目描述&#xff1a; 在公司使用软件大家会经常使用GitLab进行代码管理&#xff0c;但是GitLab对于个人使用会有&#xff0c;操作相对复杂&#xff0c;且需要收费。GitHub的代码又都是开放的。经过上网查找和尝试&#xff0c;找到了一个可以日常用来保存自己代码的工具。&…

吴恩达和OpenAI的《面向开发者的ChatGPT提示工程》精华笔记

《ChatGPT Prompt Engineering for Developers》 面向开发者的ChatGPT提示工程 shadow 趁着假期&#xff0c;学习了prompt课程&#xff0c;做了一些精简和关键知识点的梳理&#xff0c;分享给大家。 LLM 可完成的任务 包括: 总结&#xff08;如总结用户评论&#xff09; 推断&a…

streamlit+pywebview,纯python以前后端形式写桌面应用

1、VSCode VSCode VSCode扩展&#xff1a;Python 2、配置PowerShell执行策略 以管理员身份运行PowerShell&#xff0c;运行Set-ExecutionPolicy RemoteSigned&#xff0c;并输入Y&#xff0c;回车确认 3、配置Python环境 只安装Python&#xff1a;华为镜像、阿里镜像、new…

DC-DC直流隔离升压高压输出电源模块12v24v48v转50V110V200V250V350V400V500V600V800V1000V微功率

特点 效率高达 80%以上1*2英寸标准封装单电压输出价格低稳压输出工作温度: -40℃~85℃阻燃封装&#xff0c;满足UL94-V0 要求温度特性好可直接焊在PCB 上 应用 HRB W2~40W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&#xff1a;4.5~9V、9~18V、及18~36V、…

Android 编译模块 (小记)

1.整编 source build/envbuild.sh lunch xxx make 2.单独编译模块 2.1 去Android.bp 中找模块名 比如我想编译system/core/fastboot&#xff0c;那么我就去找这个路径下的Android.bp/ Android.mk Android.bp 中找每个模块的那么就行 然后直接make这个name make fastboot_…

通过【Stable-Diffusion WEBUI】复刻属于你的女神:再谈模型与参数

文章目录 &#xff08;零&#xff09;前言&#xff08;一&#xff09;复刻优秀的作品&#xff08;1.1&#xff09;模型&#xff08;1.1.1&#xff09;Model Hash &#xff08;1.2&#xff09;提示词&#xff08;1.2.1&#xff09;反推提示词 &#xff08;1.3&#xff09;参数 &…

GaussDB数据库基础函数介绍-上

目录 一、函数在数据库中的作用 二、GaussDB常用基础函数介绍与示例 1、数字操作函数 2、时间和日期处理函数 3、类型转换函数 4、数组函数 5、范围函数 6、窗口函数 7、聚集函数 8、安全函数 9、系统信息函数 10、动态脱敏函数. Tip&#xff1a;由于篇幅缘故&…

shell脚本的条件判断式

文章目录 shell脚本的条件判断式利用 if...then单层、简单条件判断式多重、复杂条件判断式例题1例题2 利用case...esac判断例题1 利用function功能例题1 shell脚本的条件判断式 很多时候我们必须要根据某些数来判断程序该如何举例来说&#xff0c;我们在之前的练习中让用户输入…

jsp网上拍卖管理系统统Myeclipse开发mysql数据库web结构jsp编程计算机网页项目

一、源码特点 jsp网上拍卖管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&a…

AWS Lambda - 第一部分

Hello大家好&#xff0c;我们今天开始讨论AWS Lambda的内容。 SAP认证考试会涉及到很多Lambda的内容&#xff0c;想要通过认证考试虽然不一定非要精通开发&#xff0c;但需要知道Lambda的一些功能和特性、适用场景以及Lambda是如何工作的。 我们开始吧&#xff01; Lambda与…

数据结构刷题(三十):96不同的二叉搜索树、01背包问题理论、416分割等和子集

一、96. 不同的二叉搜索树 1.这个题比较难想递推公式&#xff0c; dp[3]&#xff0c;就是元素1为头结点搜索树的数量 元素2为头结点BFS的数量 元素3为头结点BFS的数量 元素1为头结点搜索树的数量 右子树有2个元素的搜索树数量 * 左子树有0个元素的搜索树数量 元素2为头结…

AWS Lambda - 第二部分

Hello大家好&#xff0c;我们今天继续讨论AWS Lambda的内容。 Lambda的网络 首先&#xff0c;我们来讨论一下Lambda的网络&#xff0c;联网相关的内容。 在部署Lambda时&#xff0c;在默认情况下&#xff0c;Lambda函数是部署和运行在AWS的一个安全的VPC中&#xff0c;是在您…

“大运”有我丨智安网络护航大运,荣获成都市公安局感谢信!

近日&#xff0c;深圳市智安网络有限公司四川分公司&#xff08;以下简称“智安网络”&#xff09;荣幸受邀参与第31届世界大学生夏季运动会网络安全检查工作&#xff0c;对中和体育中心场馆安全漏洞检测进行现场技术支撑。 智安网络对此次网络安全检查工作高度重视&#xff0…

PySpark基础入门(2):RDD及其常用算子

更好的阅读体验&#xff1a;PySpark基础入门&#xff08;2&#xff09;&#xff1a;RDD及其常用算子 - 掘金 (juejin.cn) 目录 RDD简介 RDD Coding RDD简介 RDD&#xff08;Resilient Distributed Dataset&#xff09;&#xff0c;是一个弹性分布式数据集&#xff0c;是Sp…

带你快速入门光模块行业

一、行业介绍 光纤通信&#xff08;简称光通信&#xff09;是利用光导纤维传输光波信号的一种通信方式&#xff0c;于上世纪六七十年代由华裔科学家高锟博士等人率先提出。 光通信是以激光作为信息载体&#xff0c;以光纤作为传输媒介的通信方式&#xff0c;现已取代电通信成…