题解 | 最短无序连续子数组
最短无序连续子数组
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; //计算最大区间 } };