237-e-Delete Node in a Linked List
来源:互联网 发布:高中背单词软件 编辑:程序博客网 时间:2024/06/05 14:10
删除链表的指定节点,但只给你要删除的节点,没有给链表头结点。如果不是看到是easy题,我可能会觉得很难:上一个节点指针没给啊怎么删除啊。后来结合难度再一想,难道是要移动节点的值么,就像数组前移那样。照着这个想法没几分钟搞出来一提交,竟然ac了。这...有意义吗?leet的题目应该都是要转弯的,虽然这种土方法能ac但其实毫无意义。果然网上稍微搜了下,可以将要删除的节点伪装成next,然后将next删除就行了。虽然没给上一个节点,但我们可以将下一个节点扯到本节点上,这样一来只要修改2个node就行,跟传统删除比起来就像是前删和后删吧。
土方法:
//-------------------------------------------- //只给了要删除的节点,没有给链表头节点void deleteNode(struct ListNode* node) { if (node == NULL || node->next == NULL) return; struct ListNode *tmp = node; while (tmp->next->next != NULL) { tmp->val = tmp->next->val; tmp = tmp->next; } tmp->val = tmp->next->val; tmp->next = NULL; free(tmp->next);}
修改后的方法:
void fix_deleteNode(struct ListNode *node) { if (node == NULL || node->next == NULL) return; struct ListNode *del = node->next; node->val = del->val; node->next = del->next; free(del);}
0 0
- 237-e-Delete Node in a Linked List
- 237 - Delete Node in a Linked List
- 237 Delete Node in a Linked List
- 237 Delete Node in a Linked List
- [237] Delete Node in a Linked List
- [237]Delete Node in a Linked List
- 237 Delete Node in a Linked List
- 237 Delete Node in a Linked List
- (E)237. Delete Node in a Linked List
- LeetCode-E-Delete Node in a Linked List
- leetcode: Delete Node in a Linked List
- LeetCode Delete Node in a Linked List
- Delete Node in a Linked List
- 【leetcode】Delete Node in a Linked List
- Delete Node in a Linked List
- Delete Node in a Linked List
- Leetcode: Delete Node in a Linked List
- Delete Node in a Linked List
- JAVA基础 - 逻辑与&&和按位与&的区别
- 用 snprintf / asprintf 取代不安全的 sprintf
- 安卓MP3播放器开发实例(2)之音乐播放
- JAVA基础 - 数组中有没有length()这个方法?String中有没有 length()这个方法?
- [转]java中byte转换int时为何与0xff进行与运算
- 237-e-Delete Node in a Linked List
- 时间递归神经网络LSTM(Long-Short Term Memory)
- MATLAB 2015 自带toolbox 列表
- PAT乙级 1014. 福尔摩斯的约会
- rownum用法详解
- Git详解之三 Git分支
- mmseg 增加词库
- scala(1)
- Override和Overload的区别