# Find the Minimum length Unsorted Subarray, sorting which makes the complete array sorted 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 a given unsorted array A[0..n-1] of size n, we have to find the minimum length subarray A[s..e] so that by sorting this subarray the whole array will be sorted. So, if the array is like [2,6,4,8,10,9,15], then the output will be 5. The subarray 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 length of res

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

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

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

## Example

Let us see the following implementation to get 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 20-Aug-2020 08:03:50