Sort List @ LeetCode (Python)
Gas Station @ LeetCode (Python)

Partition List @ LeetCode (Python)

kitt posted @ 2014年3月15日 14:19 in LeetCode , 2145 阅读

用两个链表分别记录<x的节点和>=x的节点。

Use two linked lists to separately record nodes < x and nodes >= x.

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    # @param head, a ListNode
    # @param x, an integer
    # @return a ListNode
    def partition(self, head, x):
        if head == None: return None
        headLess = currLess = ListNode(0)  # dummy node
        headGreater = currGreater = ListNode(0)  # dummy node
        prev, curr = None, head
        while curr:
            prev, curr = curr, curr.next
            if prev.val < x:
                currLess.next, currLess, currLess.next = prev, prev, None
            else:
                currGreater.next, currGreater, currGreater.next = prev, prev, None
        currLess.next = headGreater.next
        return headLess.next
Avatar_small
Allen 说:
2014年4月01日 04:09

这个效率挺好的

Avatar_small
有问题 说:
2014年4月05日 03:06

我的方法是开两个虚拟节点,一个小一个大。然后分割链表。最后前后连接。java版本20行。

Avatar_small
kitt 说:
2014年4月07日 19:31

@有问题: 确实简短不少


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter