Given an integer array, need to find one continuous subarray So if you are only sort this subarray in ascending Order, then the whole array would 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: 5Explanation: need to sort [6, 4, 8, ten, 9] in ascending order to make the whole array sorte D in ascending order.
Note:
- Then length of the input array was in range [1, 10,000].
- The input array may contain duplicates, so ascending order here means <=.
class Solution:
def findUnsortedSubarray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
copyNums = nums[::]
copyNums.sort()
left = len(nums) - 1
right = len(nums) - 1
for i in range(0, len(nums)):
if nums[i] != copyNums[i]:
left = i
break
for in range ( Len ( nums - 1 , Span class= "PLN" > 0 - 1
if nums[i] != copyNums[i]:
right = i
break
if right - left == 0:
return 0
else:
return (right - left) + 1
From for notes (Wiz)
581. Shortest unsorted continuous Subarray shortest unsorted continuous sub-array