LeetCode 문제 풀기 - 06 - Reverse Linked List (체인 테이블 반전)

3888 단어 LeetCode

링크:


https://leetcode.com/explore/interview/card/top-interview-questions-easy/93/linked-list/560/

제목:


Reverse a singly linked list.

Example:

Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL

Notes:


각각 비귀속과 귀속 방식으로 실현하다

확인:


사고방식은 순서대로 두 번째 결점에서 마지막 결점까지의 후계를 두결점으로 설정한 다음에 이 노드를 두결점의 후계로 설정하는 것이다.

답변:


비귀속 방식
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        p1 = None
        p2 = head
        while p2 is not None:
            temp = p2.next
            p2.next = p1
            # p1,p2 
            p1 = p2
            p2 = temp
        return p1

귀속 방식
# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution(object):
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """

        return self._reverse(head)
    def _reverse(self,p1,p2 = None):
        if not p1:
            return p2
        temp = p1.next
        p1.next = p2
        return self._reverse(temp,p1)

헤드 결점, 헤드 포인터, 시작 노드에 대한 설명은 다음을 참조하십시오.https://blog.csdn.net/geekmanong/article/details/50072435

좋은 웹페이지 즐겨찾기