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