• 【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
    
  • 相关阅读:
    PAT 1032 (未完成)
    PAT 1031
    PAT 1030
    将爬取到的数据存入数据框并导出
    XPath常见用法
    python 图表
    Protobuf在Unity中的通讯使用
    ProtoBuf在Unity中的使用
    Unity更新资源代码
    匿名函数
  • 原文地址:https://www.cnblogs.com/ldy-miss/p/11949901.html
Copyright © 2020-2023  润新知