您的位置:首页 > 其它

leetcode 203 Remove Linked list Elements

2015-10-25 13:00 225 查看
题目要求:给定一个值val,去掉linked list中所有包含该值的节点。

tags:linked list,recursive

非递归思路:

1.首先设置一个伪头prehead,能像处理非头节点一样处理头结点,

2.每次都对下个节点的值进行判断,如果与给定值相同,则将当前节点的next指向下下个节点。

public ListNode removeElements(ListNode head, int val) {
ListNode preHead = new ListNode(0);
preHead.next = head;
head=preHead;
while(head.next!=null){
if(head.next.val==val){
head.next = head.next.next;
}else{
head = head.next;
}
}
return preHead.next;
}


递归思路:

1.经过removeElements函数之后返回的节点,可以由当前节点和下个节点作为输入返回的节点来组成;

2.对当前节点的判断需要涉及到null、值等于val、值不等于val这三种情况。

public ListNode removeElements2(ListNode head, int val) {
if(head==null){
return null;
}else if(head.val==val){
return removeElements(head.next, val);
}else{
ListNode temp = removeElements(head.next, val);
head.next = temp;
return head;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: