标签:info 需要 除了 class element 哈哈 引入 内存 代码
class Solution {
public ListNode removeElements(ListNode head, int val) {
//如果没有前置头,那么需要分是头还是链身
//给它加一个前置头哈哈
ListNode dummyHead=new ListNode(-1);
//删除的话,那么需要找到下一个,也就是说找到这个节点的上一个节点。
dummyHead.next=head;
ListNode node=dummyHead;
while(node!=null)
{
if(node.next!=null)
{
if(node.next.val==val)
{
node.next=node.next.next;
// node.next.next=null; 这句话也应该学到很多的。
continue;
}
}
node=node.next;
}
return dummyHead.next;
}
}
T203 删除链表中的元素:
key1:无论怎么说,添加一个dummyhead头结点是不错的选择
key2:对于删除来说,一定是到达需要删除节点的上一个节点。那么比较的就是 当前节点的下一个节点,用下一个节点进行比较
如果说是删除了相应的节点,那么指针应该留在原地不动,因为下一个节点变成新的了,再去比较。
如果没删除节点,那么应该移动。
这些没什么可说的了。
key3:if(node.next.val==val)
{
node.next=node.next.next;
// node.next.next=null; 这句话也应该学到很多的。
对于下面这句话,到底错在哪了。
对于链表的删除:1.先保存长串的节点 2.用第三方删除法,不能在原地删除。 原因:因为原地删除的话,那么再删除的就影响到本身了。你细品这句话就懂了。
删除:必须先存长串的节点,然后必须引入第三方来删除。
改代码:
Node n1=node.next;
node.next=n1.next;
n1.next=null;
确实好像减小了内存的消耗
标签:info 需要 除了 class element 哈哈 引入 内存 代码
原文地址:https://www.cnblogs.com/startFrom0/p/12609016.html