LeetCode题库86. 分隔链表:python解题答案和思路

题目描述:

解题思路:

创建俩个新的链表,遍历整个链表,将小于x的节点和大于等于x的节点分别存入俩个新建的链表中,最后将俩个链表合并

解题代码:

# 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
        """
        #create two new list, one storage <x,other stroge >=x
        
        if head is None:
            return head
        p_lesslist = ListNode(None)
        lesslist = p_lesslist
        p_biggerlist = ListNode(None)
        biggerlist = p_biggerlist
        probe = head
        while probe != None:
            if probe.val <x:
                if lesslist.val is None:
                    lesslist.val = probe.val
                else:
                    node = ListNode(probe.val)
                    lesslist.next = node
                    lesslist = lesslist.next
            if probe.val >=x:
                if biggerlist.val is None:
                    biggerlist.val = probe.val
                else:
                    node = ListNode(probe.val)
                    biggerlist.next = node
                    biggerlist = biggerlist.next
            probe = probe.next
        if p_lesslist.val != None and p_biggerlist.val != None:
            lesslist.next = p_biggerlist
            return p_lesslist
        else:
            if p_lesslist.val is None:
                return p_biggerlist
            else:
                return p_lesslist

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值