[Swift]LeetCode86. 分隔链表 | Partition List
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9935628.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.
You should preserve the original relative order of the nodes in each of the two partitions.
Example:
Input: head = 1->4->3->2->5->2, x = 3 Output: 1->2->2->4->3->5
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
示例:
输入: head = 1->4->3->2->5->2, x = 3 输出: 1->2->2->4->3->5
16ms
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * public var val: Int 5 * public var next: ListNode? 6 * public init(_ val: Int) { 7 * self.val = val 8 * self.next = nil 9 * } 10 * } 11 */ 12 class Solution { 13 func partition(_ head: ListNode?, _ x: Int) -> ListNode? { 14 var head = head 15 16 var leftHead = ListNode(0) 17 let leftDummy = leftHead 18 19 var rightHead = ListNode(0) 20 var rightDummy = rightHead 21 22 while head != nil { 23 if head!.val < x { 24 leftHead.next = head 25 leftHead = leftHead.next ?? ListNode(0) 26 }else { 27 rightHead.next = head 28 rightHead = rightHead.next ?? ListNode(0) 29 } 30 head = head!.next 31 } 32 33 leftHead.next = rightDummy.next 34 rightHead.next = nil 35 return leftDummy.next 36 } 37 }
16ms
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * public var val: Int 5 * public var next: ListNode? 6 * public init(_ val: Int) { 7 * self.val = val 8 * self.next = nil 9 * } 10 * } 11 */ 12 class Solution { 13 func partition(_ head: ListNode?, _ x: Int) -> ListNode? { 14 let prevDummy = ListNode(0), postDummy = ListNode(0) 15 var prev = prevDummy, post = postDummy 16 17 var node = head 18 19 while node != nil { 20 let next = node!.next 21 node!.next = nil 22 23 if node!.val < x { 24 prev.next = node 25 prev = prev.next! 26 } else { 27 post.next = node 28 post = post.next! 29 } 30 node = next 31 } 32 33 prev.next = postDummy.next 34 35 return prevDummy.next 36 } 37 }
20ms
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * public var val: Int 5 * public var next: ListNode? 6 * public init(_ val: Int) { 7 * self.val = val 8 * self.next = nil 9 * } 10 * } 11 */ 12 class Solution { 13 func partition(_ head: ListNode?, _ x: Int) -> ListNode? { 14 let dummyHead1 = ListNode(0) 15 let dummyHead2 = ListNode(0) 16 var p1 = dummyHead1 17 var p2 = dummyHead2 18 var p = head 19 while p != nil { 20 if p!.val < x { 21 p1.next = p 22 p1 = p! 23 } else { 24 p2.next = p 25 p2 = p! 26 } 27 p = p!.next 28 } 29 p1.next = dummyHead2.next 30 p2.next = nil 31 return dummyHead1.next 32 } 33 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了