LC-581 最短未排序子数组

Posted leo-lzj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LC-581 最短未排序子数组相关的知识,希望对你有一定的参考价值。

目标:

给出一个数组,找出里面需要重新排序的最小子数组,从而可以使得数组是升序的。

 

思路:

简单地首先将数组升序排序,然后比较前后与已排序数组不相同的元素,即可找到子数组。

 

代码:

 1 class Solution {
 2 public:
 3     int findUnsortedSubarray(vector<int>& nums) {
 4         // 先排序数组
 5         vector<int> sorted = nums;
 6         for (int i = 0; i < sorted.size(); i++) {
 7             for (int j = i + 1; j < sorted.size(); j++) {
 8                 if (sorted[i] > sorted[j]) {
 9                     int temp = sorted[i];
10                     sorted[i] = sorted[j];
11                     sorted[j] = temp;
12                 }
13             }
14         }
15         int min, max;
16         // 获得左端第一个不同的元素位置
17         for (min = 0; min < nums.size(); min++) {
18             if (sorted[min] != nums[min]) break;
19         }
20         // 获得右端第一个不同元素的位置
21         for (max = nums.size() - 1; max >= 0; max--) {
22             if (sorted[max] != nums[max]) break;
23         }
24         // 计算位置差距长度,输出结果
25         return min == nums.size() ? 0 : max - min + 1;
26     }
27 };

 

以上是关于LC-581 最短未排序子数组的主要内容,如果未能解决你的问题,请参考以下文章

581. Shortest Unsorted Continuous Subarray 最短未排序的连续子阵列

175.Shortest Unsorted Continuous Subarray(最短未分类连续子阵列)

c_cpp 581.最短未分类连续子阵列

java 581.最短未分类连续子阵列(第1个).java

java 581.最短未分类连续子阵列(第1个).java

java 581.最短未分类连续子阵列(第1个).java