Я пытаюсь попрактиковаться в вопросе список разделов
Учитывая заданный список и значение x, разделите его так, чтобы все узлы, меньшие чем x, предшествовали узлам, большим илиравно х.Вход: head = 1-> 4-> 3-> 2-> 5-> 2, x = 3 Выход: 1-> 2-> 2-> 4-> 3-> 5
Моя идея состоит в том, чтобы пройти через каждый узел и отфильтровать любое значение узла, равное x, встроить новый LinkedList и удалить узел из исходного списка.как только это будет сделано.свяжите новый LinkedList с концом исходного списка и вернитесь.мой код передается для большинства случаев, но не удалось на
Вход: head = 2-> 1, x = 2 Выход: 1-> 2
Я думаю, причина в том, что мне не удалосьудалить первый узел в этом случае, но я не уверен, почему, так как у меня также есть prev.next = cur.next.есть идеи почему?
class Solution(object):
def partition(self, head, x):
"""
:type head: ListNode
:type x: int
:rtype: ListNode
"""
dummy = node = ListNode(0)
cur, prev = Head, ListNode(0)
while cur:
if cur.val >= x:
node.next = ListNode(cur.val)
node = node.next
prev.next = cur.next
cur = None
else:
prev = cur
cur = cur.next
if dummy.next:
prev.next = dummy.next
return prev.next