class Solution:
def middleNode(self, head: Optional[ListNode]) -> Optional[ListNode]:
ans = 0
cur = head
while cur :
ans += 1
cur = cur.next
ans = math.ceil(ans/2) if ans % 2 else ans/2 + 1
cur = head
for i in range(int(ans)-1) :
cur = cur.next
return cur
3n/2 번의 연산에 결과를 내는 코드.
class Solution:
def middleNode(self, head: Optional[ListNode]) -> Optional[ListNode]:
ans = 0
node = []
cur = head
while cur :
node.append(cur)
ans += 1
cur = cur.next
idx = math.ceil(ans/2) if ans % 2 else ans/2 + 1
return node[int(idx)-1]
공간 복잡도를 포기하고 n 번만에 결과를 내도록 해봤는데 오히려 이전 코드가 더 빨랐다..
'컴퓨터 > 코테' 카테고리의 다른 글
릿코드 84 - Largest Rectangle in Histogram (0) | 2021.08.10 |
---|---|
릿코드 338 - 2진법 변환 (0) | 2021.08.10 |
릿코드200 - 섬의 수 (0) | 2021.08.09 |
릿코드62 - Unique paths [dp] (0) | 2021.08.07 |
릿코드155 - min Stack [스택] (0) | 2021.08.07 |