728x90

생각해본것
1. 또 배열로 정렬해서 풀고 싶지만 이런 풀이는 좋지 못한 풀이라해서.. 다른 방식으로 풀어보자
2. 홀수 노드인것 뒤에 짝수 노드를 붙히면 되겠네
3. swap이란 걸 써볼까?
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def oddEvenList(self, head: ListNode) -> ListNode:
# 예외 처리
if head in None:
return None
odd = head
even = head.next
even_head = head.next
#반복하면서 홀짝 노드 처리
while even and even.next:
odd.next, even.next = odd.next.next, even.next.next
odd,even = odd.next, even.next
#홀수 노드의 마지막을 짝수 헤드로 연결
odd.next = even_head
return head
구현은 아직 못했지만 책에 있는 내용이 머리속에 잘 들어왔다.
다른 풀이 법도 찾아봤는데 밑에 방법은 dummy를 쓴다.
이 방법도 익혀두면 좋을 것 같다. 연결 리스트는 dummy를 쓰면 간편해지고
더 시야를 넓게 쓸수 있을 것 같으니 dummy도 익히자!
def oddEvenList(self, head):
dummy1 = odd = ListNode(0)
dummy2 = even = ListNode(0)
while head:
odd.next = head
even.next = head.next
odd = odd.next
even = even.next
head = head.next.next if even else None
odd.next = dummy2.next
return dummy1.next728x90
'알고리즘 > 파이썬' 카테고리의 다른 글
| [파이썬 알고리즘] 중복 문자 제거 (0) | 2022.05.16 |
|---|---|
| [파이썬 알고리즘] 스택 구현 기초 (0) | 2022.05.16 |
| [파이썬 알고리즘]가장 긴 팰린드롬 부분 문자열 (0) | 2022.05.16 |
| [파이썬 알고리즘] 역순 연결 리스트 (0) | 2022.05.15 |
| [파이썬 알고리즘] 연결리스트(Linked List) 기초. (0) | 2022.05.15 |