zoukankan      html  css  js  c++  java
  • 链表分割

    题目描述
    编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前

    给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。

    Solution:

    # -*- coding:utf-8 -*-
    class ListNode:
        def __init__(self, x):
            self.val = x
            self.next = None
    
    class Partition:
        def partition(self, pHead, x):
            p1,p2 = [],[]
            while pHead is not None:
                if pHead.val<x:
                    p1.append(pHead.val)
                else:
                    p2.append(pHead.val)
                pHead = pHead.next
            pre = ListNode(0)
            work = pre
            for i in p1+p2:
                work.next = ListNode(i)
                work = work.next
            return pre.next
    

    再贴一个会超时的解,然鹅谁特么能告诉这为什么会超时

    class Partition:
        def partition(self, pHead, x):
            p1,p2 = [],[]
            while pHead is not None:
                if pHead.val<x:
                    p1.append(pHead)
                else:
                    p2.append(pHead)
                pHead = pHead.next
            pre = ListNode(0)
            work = pre
            for i in p1+p2:
                work.next = i
                work = work.next
            return pre.next
    
  • 相关阅读:
    窗内的星星
    亚特兰蒂斯
    你能回答这些问题吗
    区间最大公约数
    集训队8月14日(树状数组)
    一个简单的整数问题2
    谜一样的牛
    楼兰图腾
    Eternal Victory
    集训队8月12日(并查集)
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/11178606.html
Copyright © 2011-2022 走看看