小黑leetcode之旅:86. 分隔链表

小黑做法:硬做

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]:
        # 添加辅助结点
        head = ListNode(next = head)
        # 前指针pre_link
        pre_link = head
        # 后指针link
        link = head.next
        # 辅助数组
        temp_arr = []
        # 两个指针不停地移动
        while link:
            # 出现大于等于x的数字时停止
            if link.val >= x:
                break
            link = link.next
            pre_link = pre_link.next
        # 前指针a_link指向第一个大于等于x的数
        a_link= pre_link.next
        # 如果没有大于等于x的数字则直接返回
        if not link:
            return head.next
        # 后指针b_link
        b_link = link.next
        arr = []
        while b_link:
            # 小于x的数字放入arr,并在链表中删除
            if b_link.val < x:
                arr.append(b_link)
                a_link.next = b_link.next
            else:
                a_link = a_link.next
            b_link = b_link.next
        # arr中元素插入到pre_link后
        link_arr = pre_link
        for node in arr:
            link_arr.next = node
            link_arr = link_arr.next
        link_arr.next = link
        return head.next
            
            

在这里插入图片描述

模拟法

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]:
        # 小结点
        small_head = ListNode()
        small = small_head
        # 大结点
        big_head = ListNode()
        big = big_head
        while head:
            if head.val  x:
                small.next = head
                small = small.next
            else:
                big.next = head
                big = big.next
            head = head.next
        small.next = big_head.next
        big.next = None
        return small_head.next

在这里插入图片描述

小黑生活

下午要去朝阳公园跑步,喝喜茶!!!

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值