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:
- Then length of the input array is in range [1, 10,000].
- 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 사이의 거리
'Python > PS in Python' 카테고리의 다른 글
[1차] 다트 게임 : 코딩테스트 연습 / Python / Programmers / Level1 (0) | 2020.10.16 |
---|---|
[1차] 비밀지도 : 코딩테스트 연습 / Python / Programmers / Level1 (0) | 2020.10.09 |
LeetCode 20. Valid Parentheses - Python (0) | 2020.09.21 |
LeetCode 234. Palindrome Linked List - Python (0) | 2020.09.18 |
LeetCode160. Intersection of Two Linked Lists - Python (0) | 2020.09.16 |
댓글