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]))
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)
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)
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()
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)