LeetCode:Remove Nth Node From End of List
2015-12-11 16:41
573 查看
问题描述:
Given a linked list, remove the nth node from the end of list and return its head.
For example,
Note:
Given n will always be valid.
Try to do this in one pass.
思路:
首先用一个循环将一个指针指向第n个节点;然后再用一个循环将一个指针指向被删除节点的前一个节点,另一个指针指向尾节点,然后判断从当前节点是否是头节点,如果是,则将头节点指向当前节点的下一个节点,如果不是,则将指定位置节点删除。
代码:
Given a linked list, remove the nth node from the end of list and return its head.
For example,
Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5.
Note:
Given n will always be valid.
Try to do this in one pass.
思路:
首先用一个循环将一个指针指向第n个节点;然后再用一个循环将一个指针指向被删除节点的前一个节点,另一个指针指向尾节点,然后判断从当前节点是否是头节点,如果是,则将头节点指向当前节点的下一个节点,如果不是,则将指定位置节点删除。
代码:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { if (head == NULL) return NULL; ListNode *pre = NULL; ListNode *p = head; ListNode *q = head; for(int i = 0; i < n - 1; i++) q = q->next; while(q->next) { pre = p; p = p->next; q = q->next; } if (pre == NULL) { head = p->next; delete p; } else { pre->next = p->next; delete p; } return head; } };
相关文章推荐
- 安装nodejs时提示Leaving directory
- 创建Node Js应用
- inode
- Node.Js简介与安装
- nodejs模块——fs模块
- Permission denied: user=root, access=EXECUTE, inode="/tmp/hadoop-yarn":grid:supergroup:drwx------
- nodejs模块——Event模块
- LeetCode 222 Count Complete Tree Nodes
- node包管理器npm 学习笔记(5)
- Remove Nth Node From End of List
- Insert Node in a Binary Search Tree
- 简述CCNode和Sprite的渲染过程
- hadoop mkdir: Cannot create directory /usr. Name node is in safe mode.
- nodejs 操作文件(文件夹)
- NodeJS 基本操作
- Nodejs源码解析之module
- nodejs入门
- yum node.js
- node.js中模块,require
- C#操作XML文档(XmlDocument、XmlNode、XmlAttribute、SelectSingleNode、SelectNodes、XmlNodeList)