#203. 移除链表元素
题目描述
解题思路
也是数据结构的经典题目啦,两种思路,一种设置一个头节点,这样对于所有节点都能一样的处理;另一种就是先判断头节点是否等于要删除的值。
1、不额外添加头节点
public static ListNode removeElements(ListNode head, int val) {
while( head != null && head.val == val)
head = head.next;
if( head != null) {
ListNode p = head;
while(p.next != null) {
if(p.next.val == val)
p.next = p.next.next;
else
p = p.next;
}
}
return head;
}
提交结果:
2、添加头节点
也称为哨兵节点,作用有很多
public ListNode removeElements(ListNode head, int val) {
ListNode newHead = new ListNode(-1),p = newHead;
newHead.next = head;
while(p.next != null) {
if(p.next.val == val)
p.next = p.next.next;
else
p = p.next;
}
return newHead.next;
}
提交结果: