sort之后,记录第一次出现不同的和最后一次出现不同的,相减即区间长度。
class Solution {
public:
int findUnsortedSubarray(vector<int>& nums) {
//就是除去这段区间外,其余都是升序的
//先sort,记录不同的起始位置和最远位置,相减就是长度
vector<int> fuzhu = nums;
sort(nums.begin(),nums.end());
bool flag = true;
int left = -1, right = -1;
for(int i = 0; i < nums.size(); ++i){
if(nums[i] != fuzhu[i]){
if(flag){
left = i;
flag = !flag;
}
right = i;
}
}
return left == -1 ? 0 :right-left+1;
}
};