Leet Code 19 Remove Nth Node From End of List
2015-09-12 03:02
519 查看
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,先移动一个指针n次,然后再同时移动,当后一个指针为尾指针时,前一个指针指向了要删除元素的前一个节点。
【复杂度】
时间:O(n)
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,先移动一个指针n次,然后再同时移动,当后一个指针为尾指针时,前一个指针指向了要删除元素的前一个节点。
【复杂度】
时间:O(n)
public ListNode removeNthFromEnd(ListNode head, int n) { ListNode deleteNode = head; ListNode tailNode = head; if((head.next == null) && (n >= 1)) { return null; } for(int i = 0 ; i < n; i ++) { if(tailNode.next != null) tailNode = tailNode.next; else { if(i == n - 1) head = head.next; return head; } } while(tailNode.next != null) { deleteNode = deleteNode.next; tailNode = tailNode.next; } tailNode = deleteNode.next; deleteNode.next = tailNode.next; tailNode.next = null; tailNode = null; return head; }
相关文章推荐
- Node.js
- MARK一下,nodejs 使用session
- 理解inode
- 在Windows平台上安装Node.js及NPM模块管理
- Hadoop笔记十NameNode启动异常
- Nodejs课堂笔记-第五课 在nodejs中使用DynamoDB Local
- 理解nodejs的stream和pipe机制
- NodeJS调试工具 — node-inspector
- NodeJS热部署工具 — supervisor
- Populating Next Right Pointers in Each Node
- PlanNode enNode = PlanNode.withCityNameAndPlace可以搜到结果但PlanNode enNode = PlanNode.withLocation()却搜不到
- 基于Nodejs的前端单元测试(1)—mocha
- 常用Node.js开发工具、开发包、框架等总结
- Creating New Material Nodes in UE4
- links and inode
- Remove Nth Node From End of List
- Nodejs课堂笔记-第四课 Dynamodb为何物
- [LeetCode-19] Remove Nth Node From End of List(删除链表中倒数第N个节点)
- 关于node.js中的异步流程控制
- Node.js实现的flash-socket策略服务器