1、题目描述
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
示例:
输入: head = 1->4->3->2->5->2, x = 3 输出: 1->2->2->4->3->5
2、题解
2.1、解法一
# 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 """ node = head prev = None stack = [] ## 提取 while node: if node.val < x: if not prev: head = node.next else: prev.next = node.next stack.append(node) else: prev = node node = node.next ## 插入 cur_node = None while len(stack) >0: tmp = stack.pop(0) tmp.next = None if not cur_node: tmp.next = head head = tmp else: tmp.next = cur_node.next cur_node.next = tmp cur_node = tmp ## 获取 n = head ret = [] while n: # print(n.val) ret.append(n.val) n = n.next return ret