문제
문제는 어렵지 않다. 오름차순으로 정렬되어 있는 letters안에 target보다 큰 문자를 return, 만약 없다면 첫번째 문자 return
시간복잡도 : O(n)
class Solution:
def nextGreatestLetter(self, letters: List[str], target: str) -> str:
ans = letters[0]
for letter in letters:
if letter > target:
return letter
return ans
시간복잡도 O(logn)
class Solution:
def nextGreatestLetter(self, letters: List[str], target: str) -> str:
l, r = 0, len(letters)
while l < r:
c = (l + r) // 2
if letters[c] > target:
r = c
else:
l = c + 1
if l == len(letters):
return letters[0]
return letters[l]
오히려 n보다 조금 더 느리게 나왔다. n의 개수가 적기 때문에 그런 것 같다.
여러 방식으로 풀어보는 재미를 느끼게 해준 문제였다.
읽어보면 좋은 글
끝
'코테, 알고리즘' 카테고리의 다른 글
[LeetCode] 1351. Count Negative Numbers in a Sorted Matrix (0) | 2023.06.08 |
---|---|
[백준]18113. 그르다 김가놈 (0) | 2023.05.20 |
DSU(Disjoint Set Union) (0) | 2023.05.02 |
[LeetCode] 23. Merge k Sorted Lists (0) | 2023.03.12 |
[Python] bisect_left 구현 (0) | 2023.03.08 |