Leetcode[19]-Remove Nth Node From End of List
来源:互联网 发布:网络维护工程师工资 编辑:程序博客网 时间:2024/06/08 10:33
Link: https://leetcode.com/problems/remove-nth-node-from-end-of-list/
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-1个节点,然后删除第n个节点,最后再次翻转链表即可。
笔记:在链表翻转后,我采用的是在翻转后的链表的头部放一个无关的节点,然后往后面找,变量从1到n,当变量为n的时候,此时节点还处于n-1节点上,接着我们就让该节点的下个节点指向它的下下个节点,这样第k个节点就删除了。
Code(c++):
/** * 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) { reverseList(head); ListNode *newList = new ListNode(-1); newList->next = head; int count = 1; ListNode *pre = newList; //find the prior element //when we get the Nth Node,delete this node from list if(count==n && pre->next!=NULL){ pre->next = pre->next->next; break; }else{ pre = pre->next; count++; } } head = newList->next; //when head is not null,reverse it if(head!=NULL) reverseList(head); return head; } void reverseList(ListNode* &head){ if(head==NULL || head->next == NULL)return; ListNode *newList = new ListNode(-1); ListNode *pre = head; ListNode *temp; while(pre!=NULL){ temp = pre->next; pre->next = newList->next; newList->next = pre; pre = temp; } newList = newList->next; head = newList; }};
0 0
- [Leetcode]LeetCode 19:Remove Nth Node From End of List
- Leetcode 19 Remove Nth Node From End of List
- LeetCode 19: Remove Nth Node From End of List
- [Leetcode 19, Easy] Remove Nth Node From End of List
- LeetCode(19) Remove Nth Node From End of List
- [LeetCode 19] Remove Nth Node From End of List Solutions
- leetcode 19 Remove Nth Node From End of List
- Leetcode【19】:Remove Nth Node From End of List
- [leetcode 19] Remove Nth Node From End of List
- [Leetcode] 19 - Remove Nth Node From End of List
- LeetCode | #19 Remove Nth Node From End of List
- leetcode.19----------Remove Nth Node From End of List
- [Leetcode 19, Easy] Remove Nth Node From End of List
- LeetCode 19 Remove Nth Node From End of List
- leetcode-19 Remove Nth Node From End of List
- leetCode #19 Remove Nth Node From End of List
- leetcode 19 Remove Nth Node From End of List
- leetcode 19 Remove Nth Node From End of List
- 认识自己——人的野心和目标
- Mybatis学习(六)mybatis与hibernate区别与应用场景
- 匿名函数(function(){})
- J2EE总结(三)——深入理解JSP开发工作原理
- P269 5
- Leetcode[19]-Remove Nth Node From End of List
- Hadoop Balancer源码解读
- 线程与进程的区别
- java执行shell命令,chmod 777 xxx,改变权限无效的解决办法。
- LeetCode 之 Search Insert Position — C 实现
- css判断不同分辨率显示不同宽度布局实现自适应宽度
- c语言中关键字的用法
- VIM使用技巧 ctags taglist
- P269 6