博客域名:
http://www.xnerv.wang
原题页面: https://oj.leetcode.com/problems/partition-list/
题目类型:
难度评价:★
本文地址: http://blog.youkuaiyun.com/nerv3x3/article/details/39453367
原题页面: https://oj.leetcode.com/problems/partition-list/
题目类型:
难度评价:★
本文地址: http://blog.youkuaiyun.com/nerv3x3/article/details/39453367
Given a linked list and a value x, partition it such that all nodes less thanx come before nodes greater than or equal to x.
You should preserve the original relative order of the nodes in each of the two partitions.
For example,
Given 1->4->3->2->5->2
and x = 3,
return 1->2->2->4->3->5
.
class Solution:
# @param head, a ListNode
# @param x, an integer
# @return a ListNode
def partition(self, head, x):
if None == head or None == head.next:
return head
new_head = ListNode(-1)
new_head.next = head
tail = head
while None != tail.next:
tail = tail.next
cur = head
parent = new_head
l_pos = new_head
while tail != parent and None != cur:
if cur.val >= x:
break
parent = parent.next
cur = cur.next
l_pos = l_pos.next
parent = parent.next
if None != cur:
cur = cur.next
#l_pos = l_pos.next
while tail != parent and None != cur:
if cur.val < x:
parent.next = cur.next
cur.next = l_pos.next
l_pos.next = cur
l_pos = l_pos.next
cur = parent.next
else:
parent = parent.next
cur = cur.next
return new_head.next