Ejemplo n.º 1
0
    def addTwoNumbers(self, l1, l2):
        """
        :type l1: ListNode
        :type l2: ListNode
        :rtype: ListNode
        """
        reslist, head = None, None
        carry = 0
        while l1 or l2:
            x = l1.val if l1 else 0
            y = l2.val if l2 else 0
            res = x + y + carry
            carry = res // 10
            if reslist is None:
                reslist = ListNode(res % 10)
                head = reslist
            else:
                reslist.next = ListNode(res % 10)
                reslist = reslist.next

            if l1:
                l1 = l1.next
            if l2:
                l2 = l2.next

        if carry != 0:
            reslist.next = ListNode(carry)
        return head
Ejemplo n.º 2
0
def reverseKGroup_Iter(head, k):
    dmy = ListNode(-1)
    dmy.next = head
    tmp_pre = dmy

    while (head):
        tail = head
        cnt = 0
        while (tail and cnt < k):
            tail = tail.next
            cnt += 1

        if cnt < k:
            tmp_pre.next = head
            head = tail
        else:
            pre = head
            while (cnt > 0):
                tmp = head.next
                head.next = tail
                tail = head
                head = tmp
                cnt -= 1
            tmp_pre.next = tail
            tmp_pre = pre
    return dmy.next
Ejemplo n.º 3
0
def createLL(n):
    head = None
    i = n
    while (i > 0):
        tmp = ListNode(i)
        tmp.next = head
        head = tmp
        i -= 1
    return head
Ejemplo n.º 4
0
def remove_duplicate_node(root: ListNode):
    pre = ListNode(0)
    memo = set()
    pre.next = root
    point = pre
    while point.next:
        if point.next.val not in memo:
            memo.add(point.next.val)
            point = point.next
        else:
            point.next = point.next.next
Ejemplo n.º 5
0
def partition(root: ListNode, part_num: int):
    left, right = ListNode("l"), ListNode("r")
    left.next = root
    point1, point2 = left, right
    while point1.next:
        node = point1.next
        if node.val >= part_num:
            point1.next = node.next
            node.next = None
            point2.next = node
            point2 = point2.next
        else:
            point1 = point1.next
    point1.next = right.next
Ejemplo n.º 6
0
def remove_duplicate_node_without_extra_memory(root: ListNode):
    pre = ListNode(0)
    pre.next = root
    point = pre
    while point.next:
        point0 = root
        flag = False
        while point0 != point.next:
            if point0.val == point.next.val:
                flag = True
                point.next = point.next.next
                break
            point0 = point0.next
        if not flag:
            point = point.next
Ejemplo n.º 7
0
def insert_first_node(root: ListNode, val) -> ListNode:
    node = ListNode(val)
    node.next = root
    return node
Ejemplo n.º 8
0
def remove_node(node: ListNode):
    if node.next is None:
        return False
    node.val = node.next.val
    node.next = node.next.next