Programming/Coding Test

leetcode 206. Reverse Linked Lists 리트코드 206. 역순 연결 리스트 문제 풀이

makeitworth 2021. 5. 29. 22:40

<파이썬 알고리즘 인터뷰> 책에서 다룬 리트코드 문제들을 풀이한 포스팅이다.

 

문제는 모두 리트코드에 출제된 문제들이며, 직접 풀었지만, 책에서 주는 힌트와 풀이 과정들을 참고한 경우가 많다.

이곳은  정리한 책에 나온 문제에 대한 목록과 해설을 정리한 공식 깃허브 페이지 이며, 

다음 포스팅은 내가 푼 <파이썬 알고리즘 인터뷰> 문제 풀이 목록을 정리해 놓았다.

 

문제

https://leetcode.com/problems/reverse-linked-list/

 

Reverse Linked List - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

입력: 연결 리스트

출력: 연결 리스트

 

문제 요약: 연결리스트를 다시 연결리스트로 반환하는데, 순서를 바꿔야 한다.

유의 사항: 리스트의 수는 0개 부터 5000개 사이, 각 노드의 값은 -5000 부터 5000 사이

생각 과정

 

이렇게 연결리스트가 거꾸로 되야 한다.

 

python은 

a, b = b, a 

이렇게만 해도 되니까

위치 바꾸는 걸 마지막 노드가 가리키는 게 없을 때 까지 거꾸로 가면 되지 않을까?

 

풀이

 

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        node = head
        prev = None
        while node:
            node.next, next = prev, node.next
            prev, node = node, next
    	return prev