LeetCode -- 删除链表中值为k的元素

Posted llguanli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode -- 删除链表中值为k的元素相关的知识,希望对你有一定的参考价值。

本题目比較直接,一次遍历遇到匹配的元素直接删除(通过n.next = n.next.next)就能够了,仅仅是须要考虑到:
1.首节点的情况
2.末节点的情况


下面为实现:

public ListNode RemoveElements(ListNode head, int val) {
    
    // null list
	if(head == null){
		return null;
	}
	// constains only one node
	if(head.next == null && head.val == val){
		return null;
	}
	
	//remove first nodes
	while(head.val == val){
	    if(head.next == null){
	        break;
	    }
		head = head.next;
	}
	var tmp = head;
	
	// nodes in between
	while(head.next != null){
		if(head.next.val == val){
			head.next = head.next.next;
		}
		else{
			head = head.next;
		}
		if(head.next == null){
			break;
		}
	}
	// last node
	if(head.val == val){
		return null;
	}
	
	// restore head node
	head = tmp;
	
	return head;
	
    }


以上是关于LeetCode -- 删除链表中值为k的元素的主要内容,如果未能解决你的问题,请参考以下文章

建立一个单链表,并删除链表中值为W的元素

LeetCode-237 删除链表中的节点

LeetCode237 删除链表中的节点

Leetcode 237.删除链表中的节点

LeetCode 题解 | 237. 删除链表中的节点

Leetcode——删除链表的节点