コード例 #1
0
def unitTest(numList1: list, numList2: list):
    l1, l2 = genListNode(numList1), genListNode(numList2)

    obj = Solution()
    l3 = obj.mergeTwoLists(l1, l2)

    while l3:
        print(l3.val)
        l3 = l3.next
コード例 #2
0
from ListNodePkg import ListNode, genListNode


class Solution:
    def isPalindrome(self, head: ListNode) -> bool:
        # Iteration 1, put node.val in a list
        cur = head
        val_list = []
        while cur:
            val_list.append(cur.val)
            cur = cur.next
        # Check val_list[i] == val_list[n - i - 1]
        len_of_list = len(val_list)
        for i in range(len_of_list // 2):
            if val_list[i] != val_list[len_of_list - i - 1]:
                return False
        return True


if __name__ == "__main__":
    numList1 = [1, 2, 2, 1]
    list1 = genListNode(numList1)

    obj = Solution()
    isPd = obj.isPalindrome(list1)
    if isPd:
        print("This List is palindrome.")
    else:
        print("This List is NOT palindrome.")
コード例 #3
0
    def partition(self, head: ListNode, x: int) -> ListNode:
        # 遍历所有节点:
        # (1)所有小于x的节点放在新链表list1
        # (2)所有大于或等于x的节点都放在新链表list2
        # (3)list1的尾节点指向list2的头节点
        dummy1 = head1 = ListNode(float('-inf'))
        dummy2 = head2 = ListNode(float('-inf'))
        while head:
            if head.val < x:
                head1.next = ListNode(head.val)
                head1 = head1.next
            else:
                head2.next = ListNode(head.val)
                head2 = head2.next
            head = head.next
        head1.next = dummy2.next
        return dummy1.next


if __name__ == "__main__":
    numList = [[1, 4, 3, 2, 5, 2], [2, 1]]

    for nums in numList:
        list1 = genListNode(nums)
        obj = Solution()
        list2 = obj.partition(list1, 3)
        head = list2
        while head:
            print(head.val)
            head = head.next