Пример #1
0
    def getIntersectionNode(self, headA, headB):
        if not headA or not headB:
            return
        arrayA = ListNode.toArray(headA)
        arrayB = ListNode.toArray(headB)
        lenA = len(arrayA)
        lenB = len(arrayB)
        if lenA >= lenB:
            big = arrayA
            small = arrayB
        else:
            big = arrayB
            small = arrayA
        div = abs(lenA - lenB)
        loop = min(len(arrayA), len(arrayB)) - 1
        index = loop

        for i in range(loop, -1, -1):
            if small[i] == big[i + div]:
                index -= 1
            else:
                break

        array = small[index + 1:len(small)]
        return ListNode.toList(array)
Пример #2
0
 def removeNthFromEnd(self, head, n):
     nodes = ListNode.toArray(head)
     print(nodes)
     index = len(nodes) - n
     del nodes[index]
     if len(nodes) == 0:
         return
     return ListNode.toList(nodes)
Пример #3
0
 def mergeKLists(self, lists):
     if len(lists) == 0:
         return
     arrays = []
     for _ in lists:
         if not _:
             arrays += ListNode.toArray(_)
     if len(arrays) == 0:
         return
     arrays.sort()
     return ListNode.toList(arrays)
Пример #4
0
 def reverseKGroup(self, head, k):
     if not head:
         return
     array = ListNode.toArray(head)
     if len(array) == 0:
         return
     r = []
     _len = len(array)
     for i in range(0, _len, k):
         if i + k > _len:
             r += array[i: _len]
             break
         tmp = array[i:k+i]
         tmp.reverse()
         r += tmp
     return ListNode.toList(r)