> For the complete documentation index, see [llms.txt](https://rachel2011.gitbook.io/leetcode_cc150/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://rachel2011.gitbook.io/leetcode_cc150/leetcode/shortest-unsorted-continuous-subarray.md).

# Shortest Unsorted Continuous Subarray

Given an integer array, you need to find one **continuous subarray** that if you only sort this subarray in ascending order, then the whole array will be sorted in ascending order, too.

You need to find the **shortest** such subarray and output its length.

**Example 1:**

```
Input:
 [2, 6, 4, 8, 10, 9, 15]

Output:
 5

Explanation:
 You need to sort [6, 4, 8, 10, 9] in ascending order to make the whole array sorted in ascending order.
```

**Note:**

1. Then length of the input array is in range \[1, 10,000].
2. The input array may contain duplicates, so ascending order here mean&#x73;**<=**.

对数组nums排序，记排序后的数组为sorts，数组长度为n

foor loop 寻找当nums\[i] != sorts\[i]时的最小index和最大index

最后return r-l+1: 一般通过索引求数组长度就用左指针 - 右指针 + 1&#x20;

```
class Solution(object):
    def findUnsortedSubarray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """

        n, sorts = len(nums), sorted(nums)
        if nums == sorts: return 0
        l, r = min(i for i in range(n) if nums[i] != sorts[i]), max(i for i in range(n) if nums[i] != sorts[i])
        return r - l + 1
```
