Leetcode 581 Solution

This article provides solution to leetcode question 581 (shortest-unsorted-continuous-subarray)

https://leetcode.com/problems/shortest-unsorted-continuous-subarray

Solution

class Solution: def findUnsortedSubarray(self, nums: List[int]) -> int: l = len(nums) - 1 i = 0 s = [] while i < len(nums): num = nums[i]
popped = False while s and s[-1][0] > num: s.pop(-1) popped = True
if popped: l = min(l, s[-1][1] + 1) if s else 0
s.append((num, i)) i += 1
r = 0 i = len(nums) - 1 s = [] while i >= 0: num = nums[i]
popped = False while s and s[-1][0] < num: s.pop(-1) popped = True
if popped: r = max(r, s[-1][1] - 1) if s else len(nums) - 1 print(r)
s.append((num, i)) i -= 1
print(l, r) return r - l + 1 if r > l else 0