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