当前位置: 首页 > article >正文

(链表 删除链表的倒数第N个结点)leetcode 19

设空结点指向head便于插入和删除结点

考虑特殊情况 head结点被删除

a结点仅用来测试长度,找到目标结点的位置

b结点为空结点指向head返回值

cur用来删除目标值(特殊情况 目标值为head 这时cur=b)

则开始就将cur初始化为b开始遍历

/**
 * 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) {
        if(head->next==nullptr)
        {
            return nullptr;
        }

    ListNode* a=head;
    ListNode* b= new ListNode();
    ListNode* cur=b;
    b->next=head;
    int len=0;
    while(a!=nullptr)
    {
        a=a->next;
        len++;
    }
    
    for(int i=1;i<=len-n;i++)//使cor置于目标结点的前面,目标结点可能是head 
    {
       cur=cur->next;
    }
    cur->next=cur->next->next;
    return b->next; //目标值不是head 本身b->head 目标值是head的时候cor=b 也是b->head->next
    }
};


http://www.kler.cn/a/570153.html

相关文章:

  • 网络编程——TCP
  • 07CSS笔记——CSS3、属性选择器、结构伪类选择器、伪元素选择器
  • 质数,因数,公因数
  • 二、QT和驱动模块实现智能家居-----问题汇总1
  • AI 零样本学习(Zero-Shot Learning, ZSL)
  • 全面了解机器学习:回归、分类、分割与检测任务
  • Spring(二)容器
  • Metasploit multi/handler 模块高级选项解析
  • 014 rocketmq角色介绍
  • 谷仓的安保
  • MySQL:MySQL的数据类型
  • 全志A133 android10 mipi屏幕调试
  • NameError: name ‘libpaddle‘ is not defined
  • 【windows driver】 开发环境简明安装教程
  • ECS单机部署Hadoop
  • CSS中table常用的独有属性
  • 【软件安装】WebStorm现在免费,但是是非商业版本
  • Machine Learning 初探
  • 火语言RPA--PDF提取表格
  • 【安装Linux on Windows with WSL】包括 VS Code 和 Git