반응형
Notice
Recent Posts
Recent Comments
- Today
- Total
작심삼일
[LeetCode] 581 | Shortest Unsorted Continuous Subarray | Python 본문
728x90
반응형
문제 링크: https://leetcode.com/problems/shortest-unsorted-continuous-subarray/
문제
Given an integer array nums, 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.
Return the shortest such subarray and output its length.
조건
- 1 <= nums.length <= $10^4$
- $-10^5$ <= nums[i] <= $10^5$
내 풀이
앞에서부터 탐색하며 순서가 맞지 않는, 가장 큰 index를 찾는다.
뒤에서부터 탐색하며 순서가 맞지 않는, 가장 작은 index를 찾는다.
두 index 사이의 리스트를 다시 정렬하면 된다.
코드
class Solution:
def findUnsortedSubarray(self, nums: List[int]) -> int:
mini, maxi = nums[0], nums[-1]
left, right = len(nums)-1, 0
for idx, num in enumerate(nums):
if num < mini:
right = idx
else:
mini = num
for idx in range(len(nums)-1, -1, -1):
num = nums[idx]
if num > maxi:
left = idx
else:
maxi = num
if right > 0:
return right - left + 1
else:
return 0
728x90
반응형
'스터디 > 코테' 카테고리의 다른 글
[LeetCode] 1209 | Remove All Adjacent Duplicates in String II | Python (0) | 2022.05.06 |
---|---|
[LeetCode] 1679 | Max Number of K-Sum Pairs | Python (0) | 2022.05.04 |
[LeetCode] 905 | Sort Array By Parity | Python (0) | 2022.05.02 |
[LeetCode] 1631 | Path With Minimum Effort | Python (0) | 2022.04.28 |
[LeetCode] 1202 | Smallest String With Swaps | Python (0) | 2022.04.27 |
Comments