最短无序连续子数组
## 分析
论读题的重要性,好吧还是改不掉这个毛病。因为要求是连续的,并且整个数组最后是严格递增的,那么就显然可以知道数组最后的位置就是开始排序。然后对比一下就好了。其实这个数组可以分为三部分:有序1+无序+有序2。这个无序的左右端点都可以找到。可以思考一下怎么找。
class Solution {
public:
int findUnsortedSubarray(vector<int>& nums) {
vector<int>old;
for (int c : nums)old.push_back(c);
sort(nums.begin(), nums.end());
int l = 0, r = nums.size() - 1;
while (l < nums.size() && nums[l] == old[l])l++;
if (l == nums.size())return 0;
while (r >= 0 && nums[r] == old[r])r--;
return r - l + 1;
}
};