前言:我刷LinkCode的第二题,挺简单的
题目:删除链表中等于给定值val的所有节点。
样例
给出链表1->2->3->3->4->5->3
, 和 val =3
, 你需要返回删除3之后的链表:1->2->4->5
思路
- 先判断第一个节点是否为val,是的话就将head向后移动,直到出现不一样的为止。
- 定义一个current,privious代表当前的节点和前面的节点
- 断开节点,完成!
/**
* @param head a ListNode
* @param val an integer
* @return a ListNode
*/
public ListNode removeElements(ListNode head, int val) {
// Write your code here
if (head == null) return null;
while (head.val == val) {
if (head.next == null) return null;
head = head.next;
}
if (head == null) return null;
ListNode current = head.next;
ListNode previous = head;
while (current!= null) {
if (current.val == val) {
previous.next = current.next;
current = current.next;
}else{
previous = current;
current = current.next;
}
}
return head;
}