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

题目

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
示例 1:
【leetcode】19.删除链表的倒数第 N 个结点_第1张图片

输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:

输入:head = [1], n = 1
输出:[]
示例 3:

输入:head = [1,2], n = 1
输出:[1]

代码编写

直接在对应的位置进行链表的操作

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        if(head==nullptr){
          return head;
        } 
        
        ListNode *pre = nullptr;
        ListNode *saveHead = head; 
        int len = GetListLen(head);
        int i = 0;
        while(head!=nullptr){    
          if(n ==len){
            if(pre==nullptr){
              return head->next;
            }
            if(head==nullptr){
              pre->next = nullptr;
            }else{
              pre->next = head->next;
            } 
            break;
          }
          len--;
          pre = head;
          head = head->next;
        }

        return saveHead;
    }

    int GetListLen(ListNode* head){
      int len = 0;
      while(head!=nullptr){
        len++;
        head = head->next;
      }

      return len;
    }
};

你可能感兴趣的:(leetcode,算法)