본문 바로가기
Python/PS in Python

LeetCode 581. Shortest Unsorted Continuous Subarray - Python

by Air’s Big Data 2020. 9. 22.

581. 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:

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 means <=.

 

 

문제 정의: 크기 순으로 정렬되지 않은 가장 짧은 subarray를 찾고 그 subarray의 길이를 구하라. Input되는 array의 길이는 1부터 10,000사이의 값이다.

 

Solution1: 

def findUnsortedSubarray(nums):
    start = 0 #start는 첫번째 자리 수
    end = len(nums)-1 #end는 마지막 자리 수 
        
    while start <= end and min(nums[start:end+1]) == nums[start]: 
    #start가 end보다 작고 nums리스트에서 가장 작은 수가 nums의 start번째 수와 같지 않을 때까지
            start+=1 #start에 1씩 더한다
    while start <= end and max(nums[start:end+1]) == nums[end]:
    #start가 end보다 작고 nums리스트에서 큰 작은 수가 nums의 end+1번째 수와 같지 않을 때까지
            end-=1 #end에 1씩 뺀다
        
    return end-start+1 #end와 start 사이의 거리

 

 

댓글