【leetcode系列】【算法】【中等】分隔链表

题目:

题目链接: https://leetcode-cn.com/problems/partition-list/

解题思路:

设置两个新的空节点,一个保存>= x的节点,一个保存< x的节点

再设置两个dummy节点,用于保存两个新链表的头节点

代码实现:

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

class Solution:
    def partition(self, head: ListNode, x: int) -> ListNode:
        bigger, smaller = ListNode(0), ListNode(0)
        dummy1, dummy2 = bigger, smaller
        while head:
            curr_node = head
            head = head.next
            # 防止造成环形链表
            curr_node.next = None

            if curr_node.val < x:
                smaller.next = curr_node
                smaller = smaller.next
            else:
                bigger.next = curr_node
                bigger = bigger.next
                
        # smaller当前为小于x的最后一个节点,将smaller.next指向大于等于x的第一个节点
        smaller.next = dummy1.next
        return dummy2.next
发布了100 篇原创文章 · 获赞 4 · 访问量 1478

猜你喜欢

转载自blog.csdn.net/songyuwen0808/article/details/105283082
今日推荐