如何使用Python实现链表的划分为两个相等的部分操作
实现链表的划分为两个相等的部分操作,一种简单的方法是先遍历链表,得到链表的长度,然后再遍历链表将链表分为两个相等的部分。为了方便起见,这里我们假设链表中存储的是字符串。
代码演示如下:
class ListNode: def __init__(self, val): self.val = val self.next = None def partition(head): # 遍历链表,得到链表的长度 length = 0 curr = head while curr: length += 1 curr = curr.next # 将链表分为两个相等的部分 curr = head for i in range(length // 2): curr = curr.next second_head = curr.next curr.next = None return head, second_head # 创建链表 head = ListNode('p') curr = head for char in 'idancode.com皮蛋编程': curr.next = ListNode(char) curr = curr.next # 划分链表 first_head, second_head = partition(head)
在这个例子中,我们将链表分为了两个部分,分别是“pidancod”和“e.com皮蛋编程”。
相关文章