博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
链表 LeetCode19 删除链表的倒数第 n 个节点
阅读量:6387 次
发布时间:2019-06-23

本文共 1019 字,大约阅读时间需要 3 分钟。

题目:

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

示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.

使用两根指针,指针间距离为n-1.当一根指针指向链表尾节点时,证明另一根指针所指节点应该被删除。

 

 

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:   ListNode* removeNthFromEnd(ListNode* head, int n) {        ListNode* pNode = head;        ListNode* fast = head;        ListNode* slow = head;        //使快指针移动n步,使其与慢指针之间保持一定距离        for (int i = 0; i < n; ++i) fast = fast->next;        if (fast == nullptr)        {            pNode = head->next;            delete head; head = nullptr;            return pNode;        }        //使快慢指针同步运动,直到快指针指向链表尾        while (fast->next != nullptr)        {            fast = fast->next;            slow = slow->next;        }        //使pNext指向该被删除的节点        ListNode* pNext = slow->next;        slow->next = pNext->next;        //释放空间        delete pNext; pNext = nullptr;        return head;    }};

 

转载地址:http://tmdha.baihongyu.com/

你可能感兴趣的文章
kux文件怎么打开 苹果手机如何观看kux视频
查看>>
Python中的urllib.request模块
查看>>
第九课 《说人话》
查看>>
js对象数组排序
查看>>
如何实现在展示商品时,放大商品细节
查看>>
uboot boot流程分析
查看>>
如何学习PHP整个体系的?
查看>>
css三角形实现写法全攻略收集
查看>>
Enterprise and the press public MBT Fora
查看>>
js常用代码整理
查看>>
富文本编辑器TinyMCE
查看>>
01_vue实例_数据_方法
查看>>
“穿越”——正则表达式
查看>>
使用 find 命令实现高级排除需求
查看>>
【DEV GridControl】怎样使GridView中满足某个条件的行可编辑,其余行不可编辑?...
查看>>
一只年轻而倒悬的梨
查看>>
解决time_wait过多的问题
查看>>
技术转载:Jni学习一:了解Jni
查看>>
vue教程2-07 自定义指令
查看>>
Node.js之循环依赖
查看>>