码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-08-10 16:59:19      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:ret   csharp   style   har   tmp   tracking   restore   node   const   

本题目比較直接,一次遍历遇到匹配的元素直接删除(通过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的元素

标签:ret   csharp   style   har   tmp   tracking   restore   node   const   

原文地址:http://www.cnblogs.com/llguanli/p/7339717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!