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;
	
    }


转载于:https://www.cnblogs.com/llguanli/p/7339717.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值