博客
关于我
牛客题霸 [删除链表的倒数第n个节点] C++题解/答案
阅读量:124 次
发布时间:2019-02-27

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

题目描述

给定一个链表,删除链表的倒数第n个节点并返回链表的头指针

例如,
给出的链表为:1->2->3->4->5, n= 2.
删除了链表的倒数第n个节点之后,链表变为1->2->3->5.
备注:
题目保证n一定是有效的
请给出请给出时间复杂度为O(n)的算法

题解:

有个小技巧,叫什么名字我也不知道

如果你想让a到达倒数第n个节点,可以先复制一个b和a一样,然后b先跑n个节点,然后b和a再一起跑,当b跑到头时,a正好就在倒数第n个节点上,仔细考虑考虑这是为什么?
然后a->next=a->next->next;
就是直接越过第n个节点,让第n-1个与n+1个链接起来

代码:

/** * struct ListNode { *	int val; *	struct ListNode *next; * }; */class Solution {   public:    /**     *      * @param head ListNode类      * @param n int整型      * @return ListNode类     */    ListNode* removeNthFromEnd(ListNode* head, int n) {           // write code here        if(!head)return head;        ListNode* a=new ListNode(0);        a->next=head;        ListNode* pre=a;        ListNode* p=a;        for(int i=1;i<=n;i++)        {               pre=pre->next;        }        while(pre->next)        {               pre=pre->next;            p=p->next;        }        p->next=p->next->next;        return a->next;    }};

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

你可能感兴趣的文章
Mysql中各类锁的机制图文详细解析(全)
查看>>
MySQL中地理位置数据扩展geometry的使用心得
查看>>
Mysql中存储引擎简介、修改、查询、选择
查看>>
Mysql中存储过程、存储函数、自定义函数、变量、流程控制语句、光标/游标、定义条件和处理程序的使用示例
查看>>
mysql中实现rownum,对结果进行排序
查看>>
mysql中对于数据库的基本操作
查看>>
Mysql中常用函数的使用示例
查看>>
MySql中怎样使用case-when实现判断查询结果返回
查看>>
Mysql中怎样使用update更新某列的数据减去指定值
查看>>
Mysql中怎样设置指定ip远程访问连接
查看>>
mysql中数据表的基本操作很难嘛,由这个实验来带你从头走一遍
查看>>
Mysql中文乱码问题完美解决方案
查看>>
mysql中的 +号 和 CONCAT(str1,str2,...)
查看>>
Mysql中的 IFNULL 函数的详解
查看>>
mysql中的collate关键字是什么意思?
查看>>
MySql中的concat()相关函数
查看>>
mysql中的concat函数,concat_ws函数,concat_group函数之间的区别
查看>>
MySQL中的count函数
查看>>
MySQL中的DB、DBMS、SQL
查看>>
MySQL中的DECIMAL类型:MYSQL_TYPE_DECIMAL与MYSQL_TYPE_NEWDECIMAL详解
查看>>