使用kotlin的递归算法完成这个题目:206. 反转链表 简单 3.2K 相关企业 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[]
时间: 2023-07-02 11:19:07 浏览: 115
好的,这是一个很好的问题!我来为您解答。
以下是使用 Kotlin 实现的递归算法,用于反转链表:
```kotlin
class ListNode(var `val`: Int) {
var next: ListNode? = null
}
fun reverseList(head: ListNode?): ListNode? {
if (head?.next == null) {
return head
}
val newHead = reverseList(head.next)
head.next?.next = head
head.next = null
return newHead
}
```
在这个算法中,我们使用了一个单链表,并通过递归方法将链表反转。首先,我们检查链表是否为空或只有一个节点,如果是,则返回原始链表。否则,我们递归地调用`reverseList`函数,以反转除第一个节点之外的所有节点。然后,我们将第一个节点连接到反转后的链表的末尾,并将其`next`属性设置为`null`,最后返回新的头节点。
希望这可以帮助您完成您的工作!
阅读全文
相关推荐










