LeetCode算法题解 581-最短无序连续子数组

mac2025-12-02  7

题目描述

题解:

方法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); } };
最新回复(0)