最短无序连续子数组
程序员文章站
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;
}
};
上一篇: Spark核心编程-共享变量
下一篇: LeetCode岛屿的最大面积(DFS)