# Shortest Unsorted Continuous Subarray in Python

PythonServer Side ProgrammingProgramming

#### Beyond Basic Programming - Intermediate Python

Most Popular

36 Lectures 3 hours

#### Practical Machine Learning using Python

Best Seller

91 Lectures 23.5 hours

#### Practical Data Science using Python

22 Lectures 6 hours

Suppose we have an integer array, we need to find one continuous subarray such that, if we only sort that subarray in ascending order, then the whole array will be sorted too. We need to find the shortest such subarray and output its length. So if the array is [2,6,4,8,10,9,15], then the output will be 5. The array will be [6,4,8,10,9]

To solve this, we will follow these steps −

• res := sort the nums as an array

• ans := 0

• set r as a linked list

• for i in range 0 to the length of res

• if nums[i] is not same as res[i], then insert i into the r

• if the length of r is 0, then return 0, if the length of r is 1, then return 1

• return the last element of r – first element of r + 1

## Example (Python)

Let us see the following implementation to get a better understanding −

Live Demo

class Solution(object):
def findUnsortedSubarray(self, nums):
res = sorted(nums)
ans = 0
r = []
for i in range(len(res)):
if nums[i] != res[i]:
r.append(i)
if not len(r):
return 0
if len(r) == 1:
return 1
return r[-1]-r[0]+1
ob1 = Solution()
print(ob1.findUnsortedSubarray([2,6,4,8,10,9,15]))

## Input

[2,6,4,8,10,9,15]

## Output

5
Updated on 27-Apr-2020 08:55:20