题目
给你一个链表,删除链表的倒数第 n **个结点,并且返回链表的头结点代码
分析
典型双指针快慢指针问题,唯一需要注意的时是遍历过程为null判断及特殊情况(如 n =链表长度 或者n大于链表长度)
fun removeNthFromEnd(head: ListNode?, n: Int): ListNode? {
var fast = head
var num = n
while (fast != null && num > 0) {
fast = fast.next
num--
}
if (fast == null) return if(num == 0) head!!.next else head
var slow = head
while (fast!!.next != null) {
slow = slow!!.next
fast = fast.next
}
slow.takeIf { it!!.next !=null }?.next = slow!!.next!!.next
return head
}
关于我
一个希望友友们能提出建议的代码下毒糕手