# self.next = next from ListNode import ListNode class Solution: def swapPairs(self, head: ListNode) -> ListNode: pre = dummy = ListNode(-1, head) while pre.next and pre.next.next: # tmp = pre.next # pre.next = pre.next.next # tmp.next = pre.next.next # pre.next.next = tmp # pre = tmp pre.next, pre.next.next, pre.next.next.next, pre =\ pre.next.next, pre.next, pre.next.next.next, pre.next return dummy.next def swapPairs2(self, head: ListNode) -> ListNode: pre = dummy = ListNode(-1,head) while (p1:=pre.next) and (p2:=pre.next.next): pre.next, p2.next, p1.next, pre = p2, p1, p2.next, p1 return dummy.next head = ListNode(1) head.nextItm(2).nextItm(3).nextItm(4) obj = Solution() print(obj.swapPairs2(head))
return recur(head, None) # put val into array def sortedListToBST2(self, head: ListNode) -> TreeNode: if not head: return None # put linked list into array array = [] pos = head while pos: array.append(pos.val) pos = pos.next def transfer(beg: int, end: int) -> TreeNode: if beg > end: return None mid = (beg + end) >> 1 root = TreeNode(array[mid]) root.left = transfer(beg, mid - 1) root.right = transfer(mid + 1, end) return root return transfer(0, len(array) - 1) head = ListNode(-10) head.nextItm(-3).nextItm(0).nextItm(5).nextItm(9) so = Solution() so.sortedListToBST(head)
heap = [(head.val, idx, head) for idx, head in enumerate(lists) if head] heapq.heapify(heap) while heap: _, idx, node = heap[0] cur.next = node cur = cur.next if node.next: heapq.heapreplace(heap, (node.next.val, idx, node.next)) else: heapq.heappop(heap) cur.next = None return dummy.next lists = [] node1 = ListNode(1) node1.nextItm(4).nextItm(5) lists.append(node1) node2 = ListNode(1) node2.nextItm(3).nextItm(4) lists.append(node2) node3 = ListNode(2) node3.nextItm(6) lists.append(node3) obj = Solution() print(obj.mergeKLists(lists))
tail.next = next.next pre.next = next next.next = cur return dummy.next def insertionSortList2(self, head: ListNode) -> ListNode: if not head: return head dummy = ListNode(-1) dummy.next = head tail = head while tail.next: # max if tail.val < tail.next.val: tail = tail.next continue cur = tail.next tail.next = cur.next p = dummy while p.next.val < cur.val: p = p.next # insert p.next, cur.next = cur, p.next return dummy.next head = ListNode(-1) head.nextItm(5).nextItm(3).nextItm(4).nextItm(0) so = Solution() so.insertionSortList2(head)