删除单链表的倒数第N个节点
2015-04-14 14:23
239 查看
容易 删除链表中倒数第n个节点
查看运行结果
37%通过
给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。
注意
链表中的节点个数大于等于n
样例
给出链表1->2->3->4->5->null和 n = 2.
删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.
挑战
O(n)时间复杂度
/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val; * this->next = NULL; * } * } */ class Solution { public: /** * @param head: The first node of linked list. * @param n: An integer. * @return: The head of linked list. */ int length(ListNode *head) { ListNode *p = head; int l=0; while(p != NULL) { p = p->next; l++; } return l; } ListNode *removeNthFromEnd(ListNode *head, int n) { // write your code here int length = this->length(head); if(length==0) { return NULL; } if(length ==n){ return head->next; } n = length-n; ListNode *p = head; ListNode *q =head; int i = 0; while (q != NULL && i < n) { q=p; p=p->next; i++; } q->next = p->next; delete p; return head; } };
相关文章推荐
- 删除单链表倒数第n个节点
- Chapter 2 | Linked Lists--返回单链表倒数第n个元素及删除中间的某个节点
- 删除单链表中的倒数第n个节点的实现及测试程序
- leetcode_19. Remove Nth Node From End of List 删除单链表中的倒数第n个节点,双指针法
- 删除单链表倒数第n个节点
- 删除链表中倒数第n个节点(时间复杂度为O(n))
- 【LeetCode-面试算法经典-Java实现】【019-Remove Nth Node From End of List(移除单链表的倒数第N个节点)】
- LeetCode算法练习(删除链表的倒数第N个节点)
- [链表]-在单链表和双链表中删除倒数第K个节点
- 经典面试题】寻找单链表倒数第n个节点_C/C++
- 坚持坚持!用Java写出删除一个链表的倒数第N个节点,并返回头节点(N总是可达的)
- C++实现单链表删除倒数第k个节点的方法
- 作业6.174:删除链表中倒数第n个节点
- Lintcode174——删除链表中倒数第n个节点
- lintcode——删除链表中倒数第n个节点(链表)
- 删除链表中倒数第n个节点
- 单链表问题(反转、是否有环、删除结尾第N个节点、合并两个sortlist、找到交点)
- 【面试题】删除链表中倒数第n个节点
- LintCode-174.删除链表中倒数第n个节点
- 删除链表中倒数第n个节点