LeetCode算法-203. 移除链表元素

LeetCode算法-203. 移除链表元素

203. 移除链表元素

题目

删除链表中等于给定值 val 的所有节点。

示例:

输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-linked-list-elements/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解

Java

解法一:虚拟头结点

public ListNode removeElements(ListNode head, int val) {
    if (head == null) {
		return head;
	}
	ListNode newHeadListNode = new ListNode(-1);
	newHeadListNode.next = head;
	ListNode tempListNode = newHeadListNode;
	while (tempListNode.next != null) {
		if (tempListNode.next.val == val) {
			tempListNode.next = tempListNode.next.next;
		} else {
			tempListNode = tempListNode.next;
		}
	}
	return newHeadListNode.next;
}

解法二:递归

public ListNode removeElements(ListNode head, int val)
{
	if (head == null) {
		return head;
	}
	head.next = removeElements(head.next, val);
	if (head.val == val) {
		return head.next;
	} else {
		return head;
	}
}

C++

ListNode* removeElements(ListNode* head, int val) {
    static ListNode dummy(-1);
    dummy.next = head;
    ListNode *p = &dummy;
    
    while( p->next) {
        if (p->next->val == val) {
            p->next = p->next->next;
        }else{
            p = p->next;
        }
    }
    
    return dummy.next;
}

参考

陈皓


更多干货文章

博客:www.qiuxuewei.com
微信公众号:@开发者成长之路
公众号二维码

一个没有鸡汤只有干货的公众号