移除链表元素
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
思路:
定义一个虚拟头结点, newNode = ListNode(0) 从头部往尾部循环, 取 newNode.next.val == 给定的val
例如 A-> B-> C-> D 要删除 C ( B.next ) 只需要 A-> B -> D
B .next = D 即 是 B.next = B.next.next
Java实现
public ListNode removeElements(ListNode head, int val) {
if (head == null) return null;
ListNode newNode = new ListNode(0);
newNode.next = head;
ListNode node = newNode;
while (newNode.next != null) {
if (newNode.next.val == val) {
newNode.next = newNode.next.next;
} else {
newNode = newNode.next;
}
}
return node.next;
}
Swift实现
func removeElements(_ head: ListNode?, _ val: Int) -> ListNode? {
if head == nil {
return nil
}
var newHead = ListNode(0)
newHead.next = head
let node = newHead
while newHead.next != nil {
if newHead.next?.val == val {
newHead.next = newHead.next?.next
} else {
newHead = newHead.next!
}
}
return node.next
}
public class ListNode {
public var val: Int
public var next: ListNode?
public init(_ val: Int) {
self.val = val
self.next = nil
}
}