题目
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
分析
按照要求模拟就行,唯一需要注意的是,当下一个交换不满足两个时需要注意,详见代码注释
fun swapPairs(head: ListNode?): ListNode? {
var curr = head
var result = ListNode(0).apply {
next = head
}
var pre = result
while (curr?.next != null) {
var next = curr.next!!.next
pre.next = curr.next
curr.next!!.next = curr
//恢复连接,以防止当下一个交换不满足两个时最后一个元素丢失
curr.next = next
pre = curr
curr = next
}
return result.next
}
关于我
一个希望友友们能提出建议的代码下毒糕手