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

最短无序连续子数组

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;  //计算最大区间
    }
};

全部评论

相关推荐

06-20 19:40
中原工学院 Java
网络存储:十几天不会让你拉人办卡就结束了吧?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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