题目出处:https://leetcode-cn.com/problems/shortest-unsorted-continuous-subarray/
思路1:将数组分为三部分nums1,nums2,nums3,要找出最短的nums2,将nums2排序后整个数组变为有序。换言之,当对整个数组进行排序后,nums1和nums2将不变。所以对比排序前和排序后的数组,就可得出答案。
class Solution {
public:
int findUnsortedSubarray(vector<int>& nums) {
if(is_sorted(nums.begin(), nums.end())){
return 0;
}
vector<int> temp;
temp = nums;
sort(temp.begin(), temp.end());
int left = 0;
int right = temp.size()-1;
while(nums[left] == temp[left]){
++left;
}
while(nums[right] == temp[right]){
--right;
}
return right-left+1;
}
};