LeetCode237:Delete Node in a Linked List
2015-07-24 15:22
531 查看
Write a function to delete a node (except the tail) in a singly linked list, given only access to that node.
Supposed the linked list is
with value
给定链表中的一个节点,删除该节点。
正常情况下链表中节点的删除是需要知道被删除节点的前一个节点的,将它前一个节点的next指针指向它的下一个节点,这个节点就从链表中删除了。但是这里没有提供前一个节点,而是提供了当前节点。
一个技巧就是用它的下一个节点的值覆盖当前节点的值,然后将下一个节点删除掉,这样就等效删除了当前节点。但是需要注意这种方法不能删除尾节点(题目中也给出了这个条件)。
runtime:16ms
*node=*node->next;
直接使用ListNode默认的赋值操作符。
Supposed the linked list is
1 -> 2 -> 3 -> 4and you are given the third node
with value
3, the linked list should become
1 -> 2 -> 4after calling your function.
给定链表中的一个节点,删除该节点。
正常情况下链表中节点的删除是需要知道被删除节点的前一个节点的,将它前一个节点的next指针指向它的下一个节点,这个节点就从链表中删除了。但是这里没有提供前一个节点,而是提供了当前节点。
一个技巧就是用它的下一个节点的值覆盖当前节点的值,然后将下一个节点删除掉,这样就等效删除了当前节点。但是需要注意这种方法不能删除尾节点(题目中也给出了这个条件)。
runtime:16ms
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: void deleteNode(ListNode* node) { node->val=node->next->val; node->next=node->next->next; } };上面两行代码等效于下面这一行代码:
*node=*node->next;
直接使用ListNode默认的赋值操作符。
相关文章推荐
- Node系列——express项目搭建
- Node.js的函数返回值
- Swap Nodes in Pairs(C语言)
- [leetcode-]Remove Nth Node From End of List(C)
- [LeetCode] Delete Node in a Linked List
- NTVS:把Visual Studio变成Node.js IDE的工具 搜集资料。
- [LeetCode][Java] Populating Next Right Pointers in Each Node II
- Node:二叉树搜索
- Algorithms—25.Reverse Nodes in k-Group
- 【cheerio】nodejs的抓取页面模块
- LeetCode || Delete Node in a Linked List
- nodejs this
- 【LeetCode-面试算法经典-Java实现】【025-Reverse Nodes in k-Group(单链表中k个结点一组进行反转)】
- 【LeetCode-面试算法经典-Java实现】【024-Swap Nodes in Pairs(成对交换单链表的结点)】
- Mac上使用brew安装nvm来支持多版本的Nodejs
- Node+Express+node-mysql 实战于演习 全套mysql(增删改查)
- nodejs学习笔记一
- leetcode 237 Delete Node in a Linked List
- nodejs Buffer.fill和JSON.stringify在操作系统之间的不同反应
- webstorm+nodejs+JetBrains IDE Support+chrome打造前端开发神器