Beispiel #1
0
class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        dummyHead = ListNode(-1)
        while head:
            node = ListNode(head.val)
            node.next = dummyHead.next
            dummyHead.next = node

            head = head.next
        return dummyHead.next


# 三游标
class Solution2:
    def reverseList(self, head: ListNode) -> ListNode:
        pre = None
        cur = head
        while cur:
            next = cur.next
            cur.next = pre
            pre = cur
            cur = next
        return pre


if __name__ == '__main__':
    nums = [1, 2, 3, 4, 5]
    head = ListNodeUtils.addNodes(nums)
    res = Solution2().reverseList(head)
    ListNodeUtils.printListNode(res)
Beispiel #2
0
            if stack1 and stack2:
                sumTmp = stack1.pop() + stack2.pop() + x
            elif stack2:
                sumTmp = stack2.pop() + x
            else:
                sumTmp = stack1.pop() + x
            if sumTmp >= 10:
                sumTmp = sumTmp % 10
                x = 1
            else:
                x = 0
            node = ListNode(sumTmp)
            node.next = dummyHead.next
            dummyHead.next = node
        if x == 1:
            node = ListNode(1)
            node.next = dummyHead.next
            dummyHead.next = node
        return dummyHead.next


if __name__ == '__main__':
    # nums1 = [7, 2, 4, 3]
    # nums2 = [5, 6, 4]
    nums1 = [5]
    nums2 = [5]
    l1 = ListNodeUtils.addNodes(nums1)
    l2 = ListNodeUtils.addNodes(nums2)
    res = Solution().addTwoNumbers(l1, l2)
    ListNodeUtils.printListNode(res)
Beispiel #3
0
from com.leetcode.linkedUtils import ListNode, ListNodeUtils


class Solution:
    def isPalindrome(self, head: ListNode) -> bool:
        list1 = list()
        while head:
            list1.append(head.val)
            head = head.next
        i = 0
        j = len(list1) - 1
        while i < j:
            if list1[i] != list1[j]:
                return False
            i += 1
            j -= 1
        return True


if __name__ == '__main__':
    nums = [1]
    head = ListNodeUtils.addNodes(nums)
    res = Solution().isPalindrome(head)
    print(res)
Beispiel #4
0
import queue


class Solution:
    def mergeKLists(self, lists: List[ListNode]) -> ListNode:
        pq = queue.PriorityQueue()
        for link in lists:
            while link:
                pq.put(link.val)
                link = link.next
        dummyHead = ListNode(-1)
        cur = dummyHead
        while not pq.empty():
            node = ListNode(pq.get())
            cur.next = node
            cur = cur.next
        return dummyHead.next


if __name__ == '__main__':
    nums1 = [1, 4, 5]
    nums2 = [1, 3, 4]
    nums3 = [2, 6]
    lists = [
        ListNodeUtils.addNodes(nums1),
        ListNodeUtils.addNodes(nums2),
        ListNodeUtils.addNodes(nums3)
    ]
    res = Solution().mergeKLists(lists)
    ListNodeUtils.printListNode(res)