题目
基本思路
简单题
解释下题目:就是把小于x的节点放入x之前,大于x的节点不要管他
创建两个头节点,然后遍历初始链表,若节点值小于x,就放入新链表1,反之放入节点2,最后将两个新链表连接起来即可。
实现代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def partition(self, head, x):
"""
:type head: ListNode
:type x: int
:rtype: ListNode
"""
# 将大于等于x的结点取出来组成一个新链表,然后将旧的接在新的后面即可
dummy1,dummy2 = ListNode(0),ListNode(0)
p1,p2 = dummy1,dummy2
# 遍历指针
p = head
while p:
if p.val >= x:
p2.next = p
p = p.next
p2 = p2.next
p2.next = None
else:
p1.next = p
p = p.next
p1 = p1.next
p2.next = None
p1.next = dummy2.next
return dummy1.next
终极疑惑
就是在p = p.next
这句的位置为什么不能放在if-else循环外面呢????是不是和内存有关系啊,想不明白~
求助啊