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
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
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
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
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)
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)
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
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
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
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
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
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) head = my_list_node.head head = middleNode(head) while head: print(head.val) head = head.next
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
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.迭代&双指针&头插法&尾插法 思路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(): """ 思路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
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 = insertionSortList2(head) while head: print(head.val) head = head.next
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
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
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)
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
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
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