def lastRemaining(self, n: int, m: int) -> int:
        #构造一个循环链表
        my_list_node = MyListNode()
        for i in range(n):
            my_list_node.addAtTail(i)

        head = my_list_node.head
        p, tail = head, None
        while p:
            tail = p
            p = p.next
        #成环
        tail.next = head

        #模拟
        cnt = 0
        p = head
        while p.next != p:
            # print(p.val)
            cnt += 1
            if cnt == m - 1:
                p.next = p.next.next
                cnt = 0
            else:
                p = p.next
        return p.val
コード例 #2
0
ファイル: 148-sort-list.py プロジェクト: yuenliou/leetcode
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(3)

    head = my_list_node.head
    head = sortList(head)
    while head:
        print(head.val)
        head = head.next
コード例 #3
0
def main():
    """
    思路1.哑结点+双指针
    思路2.递归不常用
    """
    my_list_node = MyListNode()
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(9)

    head = deleteNode(my_list_node.head, 5)
    while head:
        print(head.val)
        head = head.next
コード例 #4
0
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(-3)
    my_list_node.addAtTail(4)

    head = removeZeroSumSublists(my_list_node.head)
    while head:
        print(head.val)
        head = head.next
コード例 #5
0
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)

    head = deleteDuplicates(my_list_node.head)
    while head:
        print(head.val)
        head = head.next
コード例 #6
0
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(6)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)
    my_list_node.addAtTail(6)

    head = removeElements(my_list_node.head, 6)
    while head:
        print(head.val)
        head = head.next
コード例 #7
0
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)
    my_list_node.addAtTail(6)
    my_list_node.addAtTail(7)

    ret = splitListToParts(my_list_node.head, 3)

    for head in ret:
        while head:
            print(head.val)
            head = head.next
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(-10)
    my_list_node.addAtTail(-3)
    my_list_node.addAtTail(0)
    my_list_node.addAtTail(5)
    my_list_node.addAtTail(9)

    head = my_list_node.head
    head = sortedListToBST(head)
    print('-pre-')
    pre_order_travel(head)
    print('-in-')
    in_order_travel(head)
    print('-post-')
    post_order_travel(head)
コード例 #9
0
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(4)

    l1 = my_list_node.head
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)
    l2 = my_list_node.head

    head = mergeTwoLists(l1, l2)
    while head:
        print(head.val)
        head = head.next
コード例 #10
0
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)
    l1 = my_list_node.head

    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)
    l2 = my_list_node.head

    my_list_node = MyListNode()
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(6)
    l3 = my_list_node.head

    head = mergeKLists([l1, l2, l3])
    # head = mergeKLists([[]])
    print(head)
    while head:
        print(head.val)
        head = head.next
コード例 #11
0
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(0)
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)

    ret = numComponents(my_list_node.head, [0, 3, 1, 4])
    print(ret)
コード例 #12
0
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(7)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(3)

    l1 = my_list_node.head
    my_list_node = MyListNode()
    my_list_node.addAtTail(5)
    my_list_node.addAtTail(6)
    my_list_node.addAtTail(4)
    l2 = my_list_node.head

    head = addTwoNumbers(l1, l2)
    while head:
        print(head.val)
        head = head.next
コード例 #13
0
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)

    head = reverseKGroup(my_list_node.head, 2)
    while head:
        print(head.val)
        head = head.next
コード例 #14
0
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)

    head = swapPairs(my_list_node.head)
    while head:
        print(head.val)
        head = head.next
コード例 #15
0
ファイル: 61-rotate-list.py プロジェクト: yuenliou/leetcode
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)

    head = rotateRight(my_list_node.head, 1)
    while head:
        print(head.val)
        head = head.next
コード例 #16
0
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)

    head = my_list_node.head
    head = removeNthFromEnd(head, 5)
    while head:
        print(head.val)
        head = head.next
コード例 #17
0
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)

    head = my_list_node.head
    head = reverseBetween(head, 1, 5)
    while head:
        print(head.val)
        head = head.next
コード例 #18
0
def main():
    """
    思路1.类似于归并排序的merge函数
    思路2.递归不常用
    """
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(4)

    l1 = my_list_node.head
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)
    l2 = my_list_node.head

    head = mergeTwoLists(l1, l2)
    while head:
        print(head.val)
        head = head.next
コード例 #19
0
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(5)
    my_list_node.addAtTail(2)

    head = my_list_node.head
    head = partition(head, 3)
    while head:
        print(head.val)
        head = head.next
コード例 #20
0
def main():
    """
    思路1.翻转链表
    思路2.栈
    思路3.递归
    """
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)

    ret = reversePrint(my_list_node.head)
    print(ret)
def main():
    """
    思路1.最优k间距指针
    思路2.循环两次,第一次求长度,第二次走length - k + 1
    """
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)

    head = getKthFromEnd(my_list_node.head, 2)
    while head:
        print(head.val)
        head = head.next
コード例 #22
0
def main():
    """
    思路1.迭代&双指针&头插法&尾插法
    思路2.递归,栈不常用
    """
    my_list_node = MyListNode()
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(2)
    my_list_node.addAtTail(3)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)

    head = reverseList(my_list_node.head)
    while head:
        print(head.val)
        head = head.next
def main():
    my_list_node = MyListNode()
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(8)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)

    headA = my_list_node.head

    my_list_node = MyListNode()
    my_list_node.addAtTail(5)
    my_list_node.addAtTail(0)
    my_list_node.addAtTail(1)
    my_list_node.addAtTail(8)
    my_list_node.addAtTail(4)
    my_list_node.addAtTail(5)

    headB = my_list_node.head

    solution = Solution()
    ret = solution.getIntersectionNode(headA, headB)
    print(ret)