zoukankan      html  css  js  c++  java
  • 【Leetcode链表】分隔链表(86)

    题目

    给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。

    你应当保留两个分区中每个节点的初始相对位置。

    示例:

    输入: head = 1->4->3->2->5->2, x = 3
    输出: 1->2->2->4->3->5
    

    解答

    思路:小于的用一个头结点,大于等于的用一个头结点,然后将二者相连。O(n),O(1)

    # Definition for singly-linked list.
    # class ListNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None
    
    class Solution:
        def partition(self, head: ListNode, x: int) -> ListNode:
            if not head:
                return head
            p = ListNode(-100)
            q = ListNode(-100)
            tp, tq = p, q
    
            while head:
                if head.val < x:
                    p.next = head
                    p = head
                else:
                    q.next = head
                    q = head
                head = head.next
            p.next = q.next = None  # 两条链表收尾
            p.next = tq.next
            return tp.next
    
  • 相关阅读:
    rpm的制作 spec文件写法
    RPM 打包技术与典型 SPEC 文件分析
    生成器
    闭包
    内置函数
    函数递归
    高阶函数
    匿名函数
    文件操作
    bytes
  • 原文地址:https://www.cnblogs.com/ldy-miss/p/11949901.html
Copyright © 2011-2022 走看看