示例#1
0
        p2 = p1.next
        p1.next = dummy
        dummy = p1
        p1 = p2

    return dummy


if __name__ == "__main__":
    arr = [[2, 4, 3], [5, 6, 4], [0], [0], [9, 9, 9, 9, 9, 9, 9], [9, 9, 9, 9]]

    for i in range(0, len(arr), 2):
        print("arr1 = ", arr[i])
        print("arr2 = ", arr[i + 1])
        node1 = createLinkedList(arr[i])
        node2 = createLinkedList(arr[i + 1])
        rs = sum_reverse(node1, node2)
        printLinkedList(rs)
        print()
    print("=============Sum reverse===============")
    arr = [[2, 4, 3], [5, 6, 4], [0], [0], [9, 9, 9, 9, 9, 9, 9], [9, 9, 9, 9]]

    for i in range(0, len(arr), 2):
        print("arr1 = ", arr[i])
        print("arr2 = ", arr[i + 1])
        node1 = createLinkedList(arr[i])
        node2 = createLinkedList(arr[i + 1])
        rs = sum_forward(node1, node2)
        printLinkedList(rs)
        print()
                heappush(h, (n.val, n))

        d = ListNode(0)
        cur = d
        while len(h) != 0:
            val, n = heappop(h)
            cur.next = n
            cur = cur.next
            n = n.next
            if n is not None:
                heappush(h, (n.val, n))

        return d.next


if __name__ == "__main__":
    s = Solution()

    printLinkedList(s.mergeKLists([None, None]))

    nums = [1, 2, 4, 6, 8, 10]
    head1 = buildLinkedList(nums)

    nums = [1, 3, 5, 7, 9]
    head2 = buildLinkedList(nums)

    nums = [0]
    head3 = buildLinkedList(nums)

    printLinkedList(s.mergeKLists([head1, head2, head3]))
示例#3
0
                val = cur.next.val
                while cur.next is not None and cur.next.val == val:
                    cur.next = cur.next.next
            else:
                cur = cur.next

        return dummy.next


if __name__ == "__main__":
    s = Solution()

    nums = [1, 1, 2, 3, 3, 4, 5, 5]
    head = buildLinkedList(nums)
    head = s.deleteDuplicates(head)
    printLinkedList(head)

    nums = [1, 1]
    head = buildLinkedList(nums)
    head = s.deleteDuplicates(head)
    printLinkedList(head)

    nums = [1]
    head = buildLinkedList(nums)
    head = s.deleteDuplicates(head)
    printLinkedList(head)

    nums = []
    head = buildLinkedList(nums)
    head = s.deleteDuplicates(head)
    printLinkedList(head)
示例#4
0
                new_head = self.revser_list(sub_head, k)
                sub_head.next = next_head
                cur.next = new_head
                cur = sub_head
            else:
                break
        return dumy.next

    def revser_list(self, sub_head, k):
        if k == 1:
            return sub_head

        cur = sub_head
        cur_next = cur.next
        for i in range(0, k - 1):
            cur_next_next = cur_next.next
            cur_next.next = cur
            cur = cur_next
            cur_next = cur_next_next
        return cur


if __name__ == "__main__":
    s = Solution()

    nums = [1, 2, 3, 4, 5]
    k = 2
    head = buildLinkedList(nums)
    result = s.reverseKGroup(head, k)
    printLinkedList(result)
示例#5
0
def remove_duplicates1(node: ListNode):
    # Two point
    # Time: O(n^2)
    # Space: O(1)
    node1 = node2 = node

    while (node1 is not None) and (node1.next is not None):
        if node2.next.val == node1.val:
            # renove node2.next
            node2.next = node2.next.next
        else:
            node2 = node2.next

        if (node2 is None) or (node2.next is None):
            node1 = node1.next
            node2 = node1

        #print("node1: ", node1.val)
        #print("node2: ", node2.val)
    return node


if __name__ == "__main__":
    arr = [[1, 2, 3, 5, 1, 6, 2, 10], [1], [1, 1], [1, 2]]
    for a in arr:
        print(a)
        node = createLinkedList(a)
        remove_duplicates(node)
        printLinkedList(node)
        print()
示例#6
0
from linked_list import ListNode, createLinkedList, printLinkedList

def reverse_linked_list(head: ListNode) -> ListNode:
    dummy = None
    p1 = head

    while p1 is not None:
        p2 = p1.next
        p1.next = dummy
        dummy = p1
        p1 = p2
    return dummy

if __name__ == "__main__":
    arr = [[1], [1,2], [1,2,3,4]]
    for a in arr:
        head = createLinkedList(a)
        printLinkedList(head)
        print()
        reverse = reverse_linked_list(head)
        printLinkedList(reverse)
        print()



        """

        dummy = ListNode(0)
        dummy.next = head

        fast = dummy
        for i in range(0, n):
            fast = fast.next

        slow = dummy
        while fast.next != None:
            fast = fast.next
            slow = slow.next

        slow.next = slow.next.next

        return dummy.next


if __name__ == "__main__":
    s = Solution()

    nums = [1]
    head = buildLinkedList(nums)
    root = s.removeNthFromEnd(head, 1)
    printLinkedList(root)

    nums = [0, 1, 2, 3, 4, 5, 6, 7]
    head = buildLinkedList(nums)
    root = s.removeNthFromEnd(head, 2)
    printLinkedList(root)