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

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

题目来源:

        leetcode题目,网址:19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)

解题思路:

       使用双指针找到倒数第 N+1 个节点后删除链表的第 N 个节点即可。注意当 N 为链表长度时,倒数第 N+1 个节点不存在,head->next 即为所求。

解题代码:

/**
 * 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* lastNPlusOne=head;
        ListNode* lastOne=head;
        for(int i=0;i<n;i++){
            lastOne=lastOne->next;
        }
        if(lastOne==nullptr){
            return head->next;
        }
        while(lastOne->next!=nullptr){
            lastNPlusOne=lastNPlusOne->next;
            lastOne=lastOne->next;
        }
        lastNPlusOne->next=lastNPlusOne->next->next;
        return head;        
    }
};

总结:

        官方题解新增了哑节点作为头节点以避免删除首个元素时的特殊判断。官方题解给出了三种解法。第一种是计算链表长度。两次遍历,第一次获得链表长度,第二次删除指定节点。第二种是栈,将所有元素入栈后,删去出栈时位于倒数第 N 个的节点。第三种是双指针。


相关文章:

  • 听GPT 讲Rust源代码--src/librustdoc(2)
  • Python Turtle Graphics 绘制I Love You字符
  • easyExcel实现分批导入,动态表头分批导出,以及导出表格样式设置
  • python趣味编程-5分钟实现一个石头剪刀布游戏(含源码、步骤讲解)
  • 【FLink】水位线(Watermark)
  • 使用wxPython和PyMuPDF合并PDF文档并自动复制到剪贴板
  • Stable Diffusion XL网络结构-超详细原创
  • 【C++进阶之路】第十篇:C++的类型转换
  • 环境配置|GitHub——如何在github上搭建自己写的网站
  • ClickHouse查看执行计划
  • Caché for UNIX®, Linux及macOS的安装及配置
  • mysql 设置远程登录
  • 力扣-414.第三大的数(两种解法)
  • Linux难学?大神告诉你,Linux到底该怎么自学!
  • golang opt-in transparent telemetry
  • 1.什么是Angular?
  • 【CSS】各百分比透明度 opacity 对应的 16 进制颜色值(例如:#FFFFFF80)
  • 网络爬虫|Selenium——find_element_by_xpath()的几种方法
  • 【Python】给出n个数,找出这n个数的最大值,最小值,和。
  • 矿区安全检查VR模拟仿真培训系统更全面、生动有效
  • 沪喀同心|为新疆青少年提供科普大餐,“小小博物家(喀什版)”启动
  • 多条跨境铁路加速推进,谁是下一个“超级枢纽”?
  • 筑牢安全防线、提升应急避难能力水平,5项国家标准发布
  • 警方通报“网约车司机偷拍女乘客”:已被行政拘留
  • 外交部:愿同拉美国家共同维护多边贸易体制
  • 体坛联播|穆勒主场完成拜仁谢幕战,山西车队再登环塔拉力赛