python3正常题解

划分链表

http://www.nowcoder.com/questionTerminal/1dc1036be38f45f19000e48abe00b12f

题解

1、建立一个最小的节点node,将node.next = head,这样可以将链表的头节点当作一般节点来处理。
2、设置两个变量tmp1,tmp2 = node,node tmp2遍历链表,tmp1代表小于x的最后一个链表节点
2.1、退出条件----如果tmp2.next==None:break
2.2、如果tmp2本身小于x,tmp2.next也小于x,则tmp1,tmp2后移
2.3、如果tmp2.next大于等于x,tmp2后移
2.4、否则,就需要将tmp2.next插到tmp1后面,tmp1后移一位
(也就是出现tmp2本身大于x,而tmp2.next小于x)

有问题留言,没问题点赞偶~

class Solution:
    def partition(self , head , x ):
        if not head :return None
        node = ListNode(-999)
        node.next = head
        tmp,tmp2 = node,node
        while tmp2.next!=None:
            if tmp2.next.val>=x:
                tmp2 = tmp2.next
            elif tmp2.val<x:
                tmp = tmp.next
                tmp2 = tmp2.next
            else:
                tmp3 = tmp2.next.next
                tmp2.next.next = tmp.next
                tmp.next = tmp2.next
                tmp2.next = tmp3
                tmp = tmp.next
        return node.next
全部评论
没有太明白题目的意思,也没太理解解法,可以麻烦解释一下吗?谢谢
点赞 回复 分享
发布于 2021-01-03 16:21

相关推荐

不愿透露姓名的神秘牛友
11-20 19:57
已编辑
某大厂 golang工程师 23.0k*16.0, 2k房补,年终大概率能拿到
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务