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

题目

给你一个链表,删除链表的倒数第 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;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_41094072/article/details/134248866
今日推荐