Java - 删除链表中倒数第n个节点
2017-08-08 11:10
351 查看
给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。 注意事项链表中的节点个数大于等于n您在真实的面试中是否遇到过这个题? Yes样例给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.挑战 O(n)时间复杂度/*** Definition for ListNode.* p4000ublic class ListNode {* int val;* ListNode next;* ListNode(int val) {* this.val = val;* this.next = null;* }* }*/public class Solution {/*** @param head: The first node of linked list.* @param n: An integer.* @return: The head of linked list.*/ListNode removeNthFromEnd(ListNode head, int n) {// write your code hereListNode p=head;ListNode q=head;for(int i=0;i<n;i++){p=p.next;}if(p==null){head=head.next;return head;}while(p.next!=null){p=p.next;q=q.next;}q.next=q.next.next;return head;}}
思路很简单,只有两种出现的情况,1、链表的长度刚刚好等于n,也就是说删除表头节点,2、链表长度大于n,那么我们先定义两个表头,一个后移n位,然后两个链表同时后移
,这时当后面的节点到达尾部时,前面的节点就是删除的节点的前一个节点。
相关文章推荐
- 坚持坚持!用Java写出删除一个链表的倒数第N个节点,并返回头节点(N总是可达的)
- Leet Code 19 删除链表中倒数第n个节点 - Java
- Java实现-删除链表中倒数第n个节点
- 删除链表中倒数第n个节点
- 删除链表的倒数第N个节点
- 删除链表中倒数第n个节点
- python_lintcode_372在O(1)时间复杂度删除链表节点_174删除链表中倒数第n个节点
- 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点
- leetcode-19. Remove Nth Node From End of List(删除链表倒数第N个节点)
- 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点
- Remove Nth Node From End of List 删除链表倒数第N个节点
- 删除链表中倒数第n个节点
- LintCode 删除链表中倒数第n个节点
- 删除链表中倒数第n个节点
- LintCode-174.删除链表中倒数第n个节点
- 174 - 删除链表中倒数第n个节点
- lintCode-删除链表中倒数第n个节点
- LeetCode(Remove Nth Node From End of List)删除链表倒数第n个节点