您的位置:首页 > 其它

Partition List

2015-06-19 09:21 253 查看
题目:

Given a linked list and a value x, partition it such that all nodes less than x 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
.

解题思路:

对于此题一开始无从下手,主要是因为根本无法理解题目的意思。经查阅资料后,才得知。(但仍然感觉很牵强)

题意:给定一个单链表和一个x,把链表中小于x的放到前面,大于等于x的放到后面,每部分元素的原始相对位置不变。

思路:其实很简单,遍历一遍链表,把小于x的都挂到head1后,把大于等于x的都放到head2后,最后再把大于等于的链表挂到小于链表的后面就可以了。

# Definition for singly-linked list.

# class ListNode:

# def __init__(self, x):

# self.val = x

# self.next = None

class Solution:

# @param {ListNode} head

# @param {integer} x

# @return {ListNode}

def partition(self, head, x):

sentry1,sentry2 = ListNode(-1),ListNode(-1)

p1,p2 = sentry1,sentry2

tmp = head

while tmp:

if tmp.val<x:

p3 = ListNode(tmp.val)

p1.next =p3

p1 = p1.next

elif tmp.val>=x:

p3 = ListNode(tmp.val)

p2.next = p3

p2 = p2.next

tmp = tmp.next

p1.next = sentry2.next

return sentry1.next
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: