题目描述
删除链表中等于给定值 val 的所有节点。
样例
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
算法分析
模拟
为了方便,将p.next
的点进行判断
- 1、当
p.next
的值是val
,则把p.next
的点跳过,因此p.next = p.next.next
- 2、当
p.next
的值不是val
,则p = p.next
,不做操作,继续下一个点
时间复杂度 $O(n)$
Java 代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode p = dummy;
while(p != null && p.next != null)
{
if(p.next.val == val)
{
p.next = p.next.next;
}
else p = p.next;
}
return dummy.next;
}
}