Exemple #1
0
    def test_remove_nth_node_from_end_of_list(self):
        solution = Solution()
        node = ListNode([1, 2, 3, 4, 5])
        before = '1->2->3->4->5'
        self.assertEqual(ListNode.traverse(node), before)
        solution.removeNthFromEnd(node, 2)
        after = '1->2->3->5'
        self.assertEqual(ListNode.traverse(node), after)

        node = ListNode([1])
        before = '1'
        self.assertEqual(ListNode.traverse(node), before)
        solution.removeNthFromEnd(node, 1)
        after = '1'
        self.assertEqual(ListNode.traverse(node), after)
Exemple #2
0
    def test_remove_duplicates_from_sorted_list(self):
        # 1->1->2 => 1->2
        head = ListNode([1, 1, 2])
        before = ListNode.traverse(head)
        self.assertEqual(before, '1->1->2')

        solution = Solution()
        solution.deleteDuplicates(head)
        after = ListNode.traverse(head)
        self.assertEqual(after, '1->2')

        # 1->1->2->3->3 => 1->2->3
        head = ListNode([1, 1, 2, 3, 3])
        before = ListNode.traverse(head)
        self.assertEqual(before, '1->1->2->3->3')

        solution.deleteDuplicates(head)
        after = ListNode.traverse(head)
        self.assertEqual(after, '1->2->3')

        # 1->1->1->1 => 1
        head = ListNode([1, 1, 1, 1])
        before = ListNode.traverse(head)
        self.assertEqual(before, '1->1->1->1')

        solution.deleteDuplicates(head)
        after = ListNode.traverse(head)
        self.assertEqual(after, '1')
Exemple #3
0
    def test_list_node(self):
        node = ListNode([1, 2, 33, 'a', 5, 4, 0])
        self.assertEqual(ListNode.traverse(node), '1->2->33->a->5->4->0')

        node = ListNode()
        self.assertEqual(ListNode.traverse(node), '')
        node.add('a')
        self.assertEqual(ListNode.traverse(node), 'a')
        node.add('b')
        self.assertEqual(ListNode.traverse(node), 'a->b')
        node.add('c')
        self.assertEqual(ListNode.traverse(node), 'a->b->c')
        node.add(0)
        self.assertEqual(ListNode.traverse(node), 'a->b->c->0')
        :rtype: ListNode
        """
        if not head:
            return
        node = head.next
        prev = head
        while node:
            if node.val == prev.val:
                prev.next = node.next
            else:
                prev = node
            node = node.next
        return head


solution = Solution()

head = ListNode([1, 1, 2, 2, 2, 3, 3])
print(ListNode.traverse(head))
solution.deleteDuplicates(head)
print(ListNode.traverse(head))

print()

head = ListNode([1, 1, 1])
print(ListNode.traverse(head))
solution.deleteDuplicates(head)
print(ListNode.traverse(head))

#%%