题解 | 最短无序连续子数组

最短无序连续子数组

https://www.nowcoder.com/practice/d17f4abd1d114617b51e951027be312e

#include <climits>
class Solution {
public:
    //双指针检测,一个数比左边的数的最大数小则需要往前移,比右边的最小数小则需要往后移;
    int findUnsortedSubarray(vector<int>& nums) {
        int n = nums.size();
		//双指针,
        int Max = nums[0], Min = nums[n-1], l = -1, r=-2; 

        for(int i=1; i<n; i++){
            Max = max(Max, nums[i]);
            Min = min(Min , nums[n-i-1]);  //双指针,更新最大值最小值

            if(Max != nums[i]){ //记录需要和其数左边数交换的数位置
                r = i;
            }
            if(Min!=nums[n-1-i]){	//记录需要和其数右边数交换的数的位置
                l = n-1-i;
            }
        }

        return r - l + 1;  //计算最大区间
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
03-19 10:38
实力求职者:真的绷不住了,第一张霸总人设,第二张求生欲拉满
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务