![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/52f0071c864a95b3d65fc05ac455b0ce.png)
自己1:采用暴力破解法,遍历整个链表序列,将所有小于x的值和大于等于x的值分别存储在两个列表中,并建立两个新链表,并对链表进行拼接。:
class Solution(object):
def partition(self, head, x):
"""
:type head: ListNode
:type x: int
:rtype: ListNode
"""
if not head:
return None
res = ListNode(-1)
s_list = list()
b_list = list()
res_list = list()
res_node = ListNode(-1)
p = head
while p:
if int(p.val) < x:
s_list.append(int(p.val))
else:
b_list.append(int(p.val))
p = p.next
s_list = s_list[::-1]
b_list = b_list[::-1]
res_list = b_list + s_list
for i in res_list:
tmp = ListNode(int(i))
tmp.next = res_node.next
res_node.next = tmp
res.next = res_node.next
return res.next
大佬1:跟自己的思路差不多,大佬用了双指针,没有建立我用的链表,大佬直接建立了两个空的链表,最后将链表连接起来就行了。
class Solution(object):
def partition(self, head, x):
"""
:type head: ListNode
:type x: int
:rtype: ListNode
"""
before = before_head = ListNode(0)
after = after_head = ListNode(0)
while head:
if head.val < x:
before.next = head
before = before.next
else:
after.next = head
after = after.next
head = head.next
after.next = None
before.next = after_head.next
return before_head.next