Как удалить первый узел из связанного списка Python - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь попрактиковаться в вопросе список разделов

Учитывая заданный список и значение 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
...