使用kotlin解决这个问题:86. 分隔链表 中等 717 相关企业 给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。 你应当 保留 两个分区中每个节点的初始相对位置。 示例 1: 输入:head = [1,4,3,2,5,2], x = 3 输出:[1,2,2,4,3,5] 示例 2: 输入:head = [2,1], x = 2 输出:[1,2] 提示: 链表中节点的数目在范围 [0, 200] 内 -100 <= Node.val <= 100 -200 <= x <= 200
时间: 2023-11-24 19:05:17 浏览: 84
好的,以下是使用 Kotlin 解决该问题的思路和代码:
1. 定义两个指针 `smaller` 和 `greater` 分别指向两个链表的头部,同时遍历原链表,将小于 x 的节点插入到 smaller 链表中,将大于等于 x 的节点插入到 greater 链表中。
2. 遍历完原链表后,将 smaller 链表的尾部连接到 greater 链表的头部,即可得到所需结果。
以下是 Kotlin 代码实现:
```kotlin
class ListNode(var `val`: Int) {
var next: ListNode? = null
}
fun partition(head: ListNode?, x: Int): ListNode? {
val smallHead = ListNode(0)
var small = smallHead
val greatHead = ListNode(0)
var great = greatHead
var cur = head
while (cur != null) {
if (cur.`val` < x) {
small.next = cur
small = small.next!!
} else {
great.next = cur
great = great.next!!
}
cur = cur.next
}
// 将两个链表连接起来
great.next = null
small.next = greatHead.next
return smallHead.next
}
```
希望能对你有所帮助!
阅读全文