19. 删除链表的倒数第N个节点

题目:
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.

当删除了倒数第二个节点后,链表变为 1->2->3->5.

代码:
/**

  • Definition for singly-linked list.

  • public class ListNode {

  • int val;
    
  • ListNode next;
    
  • ListNode() {}
    
  • ListNode(int val) { this.val = val; }
    
  • ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    
  • }
    */
    class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
    ListNode p=head; //利用双指针,中间隔n-2个节点,加p,q刚好q是倒数第n个
    ListNode q=head;
    ListNode r=head;
    int t=1,len=1;
    while(p.next!=null){
    p=p.next;
    len++;
    if(tn){
    r=q;
    q=q.next;
    }
    else{
    t++;
    }
    }
    if(n
    len){return head.next;} //头节点单独处理
    r.next=q.next;
    return head;

    }
    }

posted @ 2020-12-04 10:52  堤苏白  阅读(64)  评论(0)    收藏  举报