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

题目

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。

解题思路

这题比较简单,就是只要找到倒数第k个节点就可以了,双指针当一把尺子
先让一个指针走出去k步,然后两个指针一起向后就可以了

代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode *front=head;
        ListNode *last=head;
       //简单说,就是先得找到这个节点吧

       while(n!=0){
           front=front->next;
           n--;
       } 
       if(front==nullptr){//说明要删除的是头节点      
       head=head->next;
       last->next=nullptr;
       
       }else{//说明这个节点不是头节点
       while(front->next!=nullptr){//一起往后走,直到到达要删除节点前面位置
           front=front->next;
           last=last->next;
       }
       last->next=last->next->next;

       }
       return head;
    }
};
上一篇:npm 和 yarn 更改为淘宝镜像


下一篇:顺序表操作集