Remove all elements from a linked list of integers that have value val.
Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val = 6
Return: 1 --> 2 --> 3 --> 4 --> 5
翻译:
从具有val值的整数的链接列表中删除所有元素。
示例
给定: 1 - > 2 - > 6 - > 3 - > 4 - > 5 - > 6, val = 6
返回: 1 - > 2 - > 3 - > 4 - > 5
思路:如果当前结点的值等于val,则前一节点指向当前节点的下一节点。如果不等,则当前结点等于下一节点。因此我们需要保存当前结点的前一节点。考虑特殊情况,如果头结点的值等于val,则头节点为下一节点。
public ListNode removeElements(ListNode head, int val) {
ListNode result = head;
ListNode pre = null;
while(head != null){
if(head.val == val){
if(pre == null) {
head = head.next;
result = head;
continue;
}
pre.next = head.next;
head = head.next;
}else{
pre = head;
head = head.next;
}
}
return result;
}