链表
237.Delete Node in a Linked List
Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.
1 2 3 4 5 6 7 8
class Solution(object): def deleteNode(self, node): """ :type node: ListNode :rtype: void Do not return anything, modify node in-place instead. """ node.val = node.next.val node.next = node.next.next
725.Split Linked List in Parts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
def splitListToParts(self, root, k): """ :type root: ListNode :type k: int :rtype: List[ListNode] """ curr, length = root, 0 while curr: curr, length = curr.next, length + 1 chunk, longer = length//k, length%k res = [chunk + 1]*longer + [chunk]*(k-longer) prev, curr = None, root for index, num in enumerate(res): if prev: prev.next = None res[index] = curr for i in range(num): prev, curr = curr, curr.next return res
分三步:求长度,切块,把数据装进去
206.Reverse Linked List
迭代 不太懂id……
1 2 3 4 5 6 7 8
def reverseList(self, head): prev = None while head: curr = head head = head.next curr.next = prev prev = curr return prev
递归
1 2 3 4 5 6 7 8 9
def reverseList(self, head): return self._reverse(head) def _reverse(self, node, prev=None): if not node: return prev n = node.next node.next = prev return self._reverse(n, node)
445.Add Two Numbers II
You are given two non-empty linked lists representing two non-negative integers. The most significant digit comes first and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
def addTwoNumbers(self, l1, l2): """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ if not l1: return l2 if not l2: return l1 x1 = x2 = '' while l1: x1 += str(l1.val) l1 = l1.next while l2: x2 += str(l2.val) l2 = l2.next y = int(x1)+int(x2) y = str(y) head = next_node = ListNode(y[0]) for i in range(1, len(y)): next_node.next = ListNode(y[i]) next_node = next_node.next return head
328.Odd Even Linked List
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
def oddEvenList(self, head): """ :type head: ListNode :rtype: ListNode """ d1=odd=ListNode(0) d2=even=ListNode(0) i=1 while head: if i%2: odd.next,odd=head,head else: even.next,even=head,head head=head.next i+=1 odd.next,even.next=d2.next,None return d1.next
放五一了啦啦啦
近期评论