1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| def distinctLinkedList(head): dummy = head while head: while head.n and head.v == head.n.v: head.n = head.n.n head = head.n return dummy
def deleteLinkedList(head): dummy = ListNode(0) dummy.n = head head = dummy while head.n and head.n.n: if head.n.v == head.n.n.v: dv = head.n.v while head.n and head.n.v == dv: head.n = head.n.n else: head = head.n return dummy.n
def reverseLinkedList(head): if not head: return head dummy = head while head.n: next = head.n head.n = head.n.n next.n = dummy dummy = next return dummy
def reverseLinkedListMN(head,m,n): dummy = ListNode(0) dummy.n = head prev = dummy for _ in range(m-1): prev = prev.n head = head.n for _ in range(n-m): next = head.n head.n = head.n.n next.n = prev.n prev.n = next return dummy.n
def reverseLinkedListRecall(head): if not head: return head if not head.n: return head next = reverseLinkedListRecall(head.n) head.n.n = head head.n = None return next class ListNode: def __init__(self, v, n=None): self.v = v self.n = n x=ListNode(1) y=ListNode(2) x.n=y print(x.v) print(x.n.v)
|