1、描述
请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。
说明:1)链表至少包含两个节点
2)链表中所有节点的值都是唯一的
3)给定的节点为非末尾节点并且一定是链表中的一个有效节点
4)不要从你的函数中返回任何结果
现有一个链表--head = [4, 5, 1, 9],它可以表示为
例1:输入:head = [4, 5, 1, 9],node = 5
输出:[4, 1, 9]
解释:给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为4->1->9
例2:输入:head = [4, 5, 1, 9],node = 1
输出:[4, 5, 9]
解释:给定你链表中值为1的嗲三个节点,那么在调用了你的函数之后,链表应变为4->5->9
2、算法
思想:我们无法访问我们想要删除的节点 之前 的节点,我们始终不能修改该节点的 next 指针。相反,我们必须将想要删除的节点的值替换为它后面节点中的值,然后删除它之后的节点。
时间复杂度:O(1)
func deleteNode(_ node : ListNode?){
/*
与下一个节点交换
*/
node?.val = (node?.next?.val)!
node?.next = node?.next?.next
}