删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->3->4->5 , val = 4
输出: 1->2->3->5
解法:
/**
* Definition for singly-linked list.
* public class ListNode {
* public var val: Int
* public var next: ListNode?
* public init(_ val: Int) {
* self.val = val
* self.next = nil
* }
* }
*/
class Solution {
func removeElements(_ head: ListNode?, _ val: Int) -> ListNode? {
var head = head
var current = head;// 当前节点
var pre = head;// 前一个指针
while (current != nil) {
if (current!.val == val) {
if (current === head) {
head = current!.next;//删除头节点
pre = head;// 前一个指针更新
} else {
pre!.next = current!.next;// 删除中间节点
}
} else {
pre = current;// 前一个指针后移
}
current = current!.next;// 当前指针后移
}
return head;
}
}