📌 LeetCode [228]: Summary Ranges
🔗 문제 링크
문제 설명 📄
정렬된 정수 배열 nums
가 주어질 때, 연속된 숫자 범위를 문자열 형식으로 반환합니다.
- 단일 숫자는 문자열로 나타냅니다.
- 연속된 숫자는
"start->end"
형식으로 나타냅니다.
문제 접근 방식 📋
- 초기화:
- 시작 인덱스
left
를 초기화합니다.
- 시작 인덱스
- 반복문 처리:
- 배열의 끝까지 반복하면서 연속성이 끊어지는 지점을 탐지합니다.
- 연속성이 끊어지면 해당 범위를 문자열로 저장합니다.
- 반복문 내에서 마지막 요소까지 처리하도록 조건을 설정합니다.
- 결과 생성:
- 연속 범위를 정리하여 결과 리스트에 추가합니다.
Solution 💻
class Solution:
def summaryRanges(self, nums: List[int]) -> List[str]:
if not nums:
return []
answer = []
left = 0
for right in range(1, len(nums) + 1):
if right == len(nums) or nums[right - 1] + 1 != nums[right]:
if right - 1 == left:
answer.append(str(nums[left]))
else:
answer.append(f"{nums[left]}->{nums[right - 1]}")
left = right
return answer
시간 복잡도 분석 ⏲️
- 시간 복잡도:
O(n)
- 배열을 한 번 순회하며 연속성을 판단하므로 선형 시간.
- 공간 복잡도:
O(1)
- 추가 메모리 사용 없이 입력 배열 내에서 계산.
공간 복잡도 분석 🗄️
- 결과 배열
answer
는 출력 용도로 사용되므로 공간 복잡도 계산에 포함되지 않습니다. - 추가적으로 사용하는 변수는 상수 공간이므로 최종 공간 복잡도는
O(1)
.
'알고리즘' 카테고리의 다른 글
LeetCode [1791]: Find Center of Star Graph (0) | 2024.12.20 |
---|---|
LeetCode [168]: Excel Sheet Column Title (1) | 2024.12.20 |
LeetCode [703]: Kth Largest Element in a Stream (0) | 2024.12.20 |
LeetCode [766]: Toeplitz Matrix (0) | 2024.12.20 |
LeetCode [476]: Number Complement (0) | 2024.12.19 |