题解:
方法1:
将nums数组从小到大排个序得到sortNums数组,然后找到两个数组,从左边开始第一个不相等的位置left、从右边开始第一个不相等的位置right,最后right-left+1就是最短的无序连续子数组(将left-right的数排序,整个数组也会有序)。
代码:
class Solution {
public:
int findUnsortedSubarray(vector<int>& nums) {
vector<int> sortNums;
for(int i = 0; i < (int)nums.size(); i++)
{
sortNums.push_back(nums[i]);
}
sort(sortNums.begin(),sortNums.end());
int left = -1,right = -1;
for(int i = 0; i < (int)nums.size(); i++)
{
if(nums[i] != sortNums[i])
{
left = i; break;
}
}
for(int i = nums.size()-1; i >= 0; i--)
{
if(nums[i] != sortNums[i])
{
right = i; break;
}
}
if(left == right)
return 0;
else
return (right-left+1);
}
};