最短无序连续子数组
给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。 你找到的子数组应是最短的,请输出它的长度。 示例 1: 输入: [2, 6, 4, 8, 10, 9, 15] 输出: 5 解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。 解题思路:先创建一个数组tmp,将原数组拷贝过去,再对tmp进行排序。然后和原数组进行比对得到所求长度。 class Solution { public: int findUnsortedSubarray(vector<int>& nums) { vector<int>tmp = nums; sort(tmp.begin(), tmp.end()); int left = 0; int right = nums.size() - 1; while(left < right && nums[left] == tmp[left]) left++; while(left <= right && nums[right] == tmp[right]) right--; return right - left + 1; } }; 来源: CSDN 作者: _In2ne1 链接: https://blog.csdn.net/qq_42644428/article