题目:
题目链接: 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