栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

分隔链表Python解法

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分隔链表Python解法

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/partition-list
 

例:

输入:head = [1,4,3,2,5,2], x = 3
输出:[1,2,2,4,3,5]

解析:

使用双链表,一个链表存放大于等于target的值,另一个存放小于target的值,然后首尾相即可。

# Definition for singly-linked list.
# class ListNode(object):
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution(object):
    def partition(self, head, x):
        """
        :type head: ListNode
        :type x: int
        :rtype: ListNode
        """
        p, q = ListNode(), ListNode()  # 初始化两个空节点
        p.next = head  # p指向head
        head = p  # 保留head,第一个链表的头结点,用于存放小于target的值
        head2 = q  # 第二个链表的头结点,用于存放大于等于target的值

        while p.next:  # 循环条件
            if p.next.val < x:
                p = p.next  # 小于,指针直接后移即可
            else:  # 大于等于,跳过,并放入第二个链表里面
                q.next = p.next
                p.next = p.next.next
                q = q.next
                q.next = None
        p.next = head2.next  # 首尾相连

        return head.next  # 返回头结点的next节点即可

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770053.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号