leetcode 每日一题 86. 分隔链表

双指针

思路:

初始化两个before,after。遍历head链表,如果head指针指向的元素小于x,将该节点插入before,否则将该节点插入after。遍历完成后,将before和after拼接。

代码:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def partition(self, head: ListNode, x: int) -> ListNode:
        before = before_head = ListNode(0)
        after = after_head = ListNode(0)

        while head:
            if head.val < x:
                before.next = head
                before = before.next
            else:
                after.next = head
                after = after.next
            head = head.next
        after.next = None
        before.next = after_head.next

        return before_head.next

 

posted @ 2020-06-17 07:39  nil_f  阅读(36)  评论(0)    收藏  举报