Leetcode203. 移除链表元素
题目:
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
题解:
由于头结点没有前一个结点,找到第一个不为val的结点,添加为虚拟头结点,这样删除头结点就不用另做考虑。
scala代码如下:
def removeElements2(head: ListNode, value: Int): ListNode = {
//添加虚拟头节点,防止删除的元素是第一个
val newHead = new ListNode()
newHead.next = head
var cur = newHead.next
var pre = newHead
while (cur != null) {
if (cur.x == value) {
pre.next = cur.next
} else {
pre = pre.next
}
cur = cur.next
}
newHead.next
}
java代码:
/**
* 输入: 1->2->6->3->4->5->6, val = 6
* 输出: 1->2->3->4->5
*
* @param head
* @param k
* @return
*/
public static ListNode removeElements(ListNode head, int k) {
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode pre = dummy;
ListNode cur = head;
while (cur!= null) {
if (cur.value == k) {
pre.next = cur.next ;
} else {
pre = pre.next;
}
cur =cur.next;
}
return dummy.next;
}