您的位置:首页 > 其它

LeetCode 237.删除链表中的节点

2019-04-16 22:40 351 查看

LeetCode 237.

我的思路

无法访问前一个结点,因此不能用惯常的删除结点方法。
那么就从后往前赋值,然后删除结尾结点。
这是我一开始的思路,但不是最好的方法。

void deleteNode(ListNode* node) {
ListNode *p = node;
while(p->next){
p->val = p->next->val;
if(!p->next->next){
ListNode *temp = p->next;
p->next = NULL;
delete(temp);
return ;
}
p = p->next;
}
}

更好的方法

还是看了题后评论,大呼精巧。
这种方法运用了链表“”的特性,而我的思路是操作数组的思路。

void deleteNode(ListNode* node) {
node->val = node->next->val;
ListNode *temp = node->next;
node->next = node->next->next;
delete(temp);
}

不删除多余结点的话会快上一点吧,但没必要。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: