小黑做法:硬做
# Definition for singly-linked list.# class ListNode:#def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution:def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]:# 添加辅助结点head = ListNode(next = head)# 前指针pre_linkpre_link = head# 后指针linklink = head.next# 辅助数组temp_arr = []# 两个指针不停地移动while link:# 出现大于等于x的数字时停止if link.val >= x:breaklink = link.nextpre_link = pre_link.next# 前指针a_link指向第一个大于等于x的数a_link= pre_link.next# 如果没有大于等于x的数字则直接返回if not link:return head.next# 后指针b_linkb_link = link.nextarr = []while b_link:# 小于x的数字放入arr,并在链表中删除if b_link.val < x:arr.append(b_link)a_link.next = b_link.nextelse:a_link = a_link.nextb_link = b_link.next# arr中元素插入到pre_link后link_arr = pre_linkfor node in arr:link_arr.next = nodelink_arr = link_arr.nextlink_arr.next = linkreturn head.next
模拟法
# Definition for singly-linked list.# class ListNode:#def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution:def partition(self, head: Optional[ListNode], x: int) -> Optional[ListNode]:# 小结点small_head = ListNode()small = small_head# 大结点big_head = ListNode()big = big_headwhile head:if head.val x:small.next = headsmall = small.nextelse:big.next = headbig = big.nexthead = head.nextsmall.next = big_head.nextbig.next = Nonereturn small_head.next
小黑生活
下午要去朝阳公园跑步,喝喜茶!!!
如果觉得《小黑leetcode之旅:86. 分隔链表》对你有帮助,请点赞、收藏,并留下你的观点哦!