문제
leetcode.com/problems/odd-even-linked-list/
코드
1) 배열 이용
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def oddEvenList(self, head: ListNode) -> ListNode:
even = []
odd = []
cur = head
if not cur or not cur.next:
return head
while cur and cur.next:
even.append(cur.val)
odd.append(cur.next.val)
cur = cur.next.next
if cur:
even.append(cur.val)
_sum = even+odd
result = ListNode()
for i,num in enumerate(_sum):
if i == 0 :
result.val = num
else :
node = result
while node.next != None:
node = node.next
node.next = ListNode(num)
return result
성공은 했지만,, 굳이 새 배열에 값을 저장하지 않아도 되는 방법이 있을 것 같다.
다른 코드
1) 노드 자체의 순서를 변경
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def oddEvenList(self, head: ListNode) -> ListNode:
if not head:
return None
odd = head
even = head.next
evenHead = even
while even and even.next:
odd.next = even.next
odd = odd.next
even.next = odd.next
even = even.next
odd.next = evenHead
return head
실행속도차이 52배,,
'⏳ 알고리즘 > python 알고리즘 문제 풀이' 카테고리의 다른 글
프로그래머스 - LV1. 신규 아이디 추천(카카오 2021 블라인드 채용) (0) | 2021.06.07 |
---|---|
프로그래머스 - LV1. 키패드 누르기(카카오 2020 인턴쉽) (0) | 2021.06.04 |
리트코드 - 24. Swap Nodes in Pairs (0) | 2021.05.11 |
리트코드 - 2. Add Two Numbers (0) | 2021.05.10 |
리트코드 - 206. Reverse Linked List (0) | 2021.05.09 |