日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

581. 最短无序连续子数组

發布時間:2023/11/29 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 581. 最短无序连续子数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給你一個整數數組 nums ,你需要找出一個 連續子數組 ,如果對這個子數組進行升序排序,那么整個數組都會變為升序排序。

請你找出符合題意的 最短 子數組,并輸出它的長度。

示例 1:

輸入:nums = [2,6,4,8,10,9,15]
輸出:5
解釋:你只需要對 [6, 4, 8, 10, 9] 進行升序排序,那么整個表都會變為升序排序。
示例 2:

輸入:nums = [1,2,3,4]
輸出:0
示例 3:

輸入:nums = [1]
輸出:0

解題思路

因為其中一個 連續子數組 ,如果對這個子數組進行升序排序,那么整個數組都會變為升序排序。

說明只有中間這個子數組是亂序的,前面一部分和后面一部分都是遞增的。因此我們可以維護一個從左到右的最大值和一個從右到左的最小值,最大值在前面和后面的遞增數組中,都是正常遞增的,但是在中間的亂序數組中,大值就會出現在小值的左邊,當出現這種情況時,就說明了當前元素是在亂序數組當中的,對于最小值也是同樣的道理

代碼

class Solution {public int findUnsortedSubarray(int[] nums) {int min=Integer.MAX_VALUE,max=Integer.MIN_VALUE;int n=nums.length; int l=-1,r=-1;for (int i=0;i<n;i++){if (max>nums[i]){r=i;}else {max=nums[i];}if (min<nums[n-i-1]){l=n-i-1;}else {min=nums[n-i-1];}}return r==-1?0:r-l+1;} }

總結

以上是生活随笔為你收集整理的581. 最短无序连续子数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。