一 题目:
二 思路:
- 正常来说如果是双链表我们应该是要让当前结点的前一个结点指向当前结点的下一个结点来做到删除该结点的,如果是单链表应该从前面遍历找到要删除的结点;
- 但是这题只给我们直接访问的当前结点,那可以想到以此把下一个结点的值覆盖当前结点,不改变next指针指向,如果当前结点是最后一个值了,就把当前结点给删除了(这以上我们代码里保留一个pre结点的原因)
三 代码:
class Solution {
public void deleteNode(ListNode node) {
ListNode temp=node;
ListNode pre=null;
while (temp.next!=null){
pre=temp;
temp.val=temp.next.val;
temp=temp.next;
}
if (pre!=null){
pre.next=null;
}
}
}
网友评论