欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

最短无序连续子数组

程序员文章站 2022-07-15 18:32:58
...

最短无序连续子数组
解:这道题我想了几天,一开始想用滑动窗口方法解,但是,很难确定左右两边的具体位置,所以,今天下午突发奇想,就是复制原来的nums数组,然后对数组进行排序,这样,只要对比原来的数组和排序后的数组的数字具体位置就很好的解决这道问题,比如左边的数字就是temp[i]!=nums[i]的位置,而,右边就是temp[j]!=nums[j]这样最后相减,就得到了所求。

class Solution {
public:
    int findUnsortedSubarray(vector<int>& nums) {
        int len1 = nums.size();
        if(len1==0){
            return 0;
        }
        vector<int> temp;
        temp = nums;
        sort(temp.begin(),temp.end());
        int start, end;
        for(int i=0;i<len1;i++){
            if(temp[i] != nums[i]){
                start = i;
                break;
            }
            if(i==len1-1){
                start = len1-1;
            }
        }
        for(int j=len1-1;j>=start;j--){
            if(nums[j]!=temp[j]){
                end = j;
                break;
            }
            end=j-1;
        }
        return end-start+1;
        
    }
};