leetcode86分隔链表

题目

给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。

你应当保留两个分区中每个节点的初始相对位置。

示例:

输入: head = 1->4->3->2->5->2, x = 3
输出: 1->2->2->4->3->5

思路

新建两个链表,给定的特定值。对链表分隔,将小于特定值的节点放在一个链表,大于特定值的节点放在另一个链表,小于特定值的链表放在大于特定链表之前。

代码

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

class Solution(object):
    def partition(self, head, x):
        """
        :type head: ListNode
        :type x: int
        :rtype: ListNode
        """
        if head is None or head.next is None:
            return head
        q1= head1 = ListNode(0)
        q2 = head2 = ListNode(0)
        q = head
        while q:
            if q.val<x:
                q1.next = q
                q1 = q1.next
            else:
                q2.next = q
                q2 = q2.next
            q= q.next
        q1.next=head2.next
        q2.next = None
        return head1.next
                

猜你喜欢

转载自blog.csdn.net/lgy54321/article/details/85008181