//使用两次遍历
ListNode* removeNthFromEnd(ListNode* head, int n) {
if (!head->next) return NULL;
int len = ;
ListNode *p = head;
while (p) {
p = p->next;
++len;
} p = head;
if (len == n)
return head->next;
for (int j = ; j < len - n -; ++j) {//因为头结点存在
p = p->next;
} p->next = p->next->next;
return head;
} //使用单次遍历,先使p移动n+1个位子,即剩下还有(len-n-1)个位子,对应面上面的j循环
//然后将q从头移动,并同时p向后移动,从而可知q的位置就是倒数第n个位置
ListNode* removeNthFromEnd(ListNode* head, int n) {
if (!head->next) return NULL;
ListNode *p = head;
for (int i = ; i < n; ++i)p = p->next;
if (!p)return head->next;
ListNode *q = head;
while (p->next) {
p = p->next;
q = q->next;
}
q->next = q->next->next;
return head;
}

019_删除链表的倒数第N个节点的更多相关文章

  1. lintcode:Remove Nth Node From End of Lis 删除链表中倒数第n个节点

    题目: 删除链表中倒数第n个节点 给定一个链表,删除链表中倒数第n个节点,返回链表的头节点.  样例 给出链表1->2->3->4->5->null和 n = 2. 删除 ...

  2. 删除链表中倒数第n个节点

    给定一个链表,删除链表中倒数第n个节点,返回链表的头节点. 样例 给出链表1->2->3->4->5->null和 n = 2. 删除倒数第二个节点之后,这个链表将变成1 ...

  3. [LeetCode] 19. 删除链表的倒数第N个节点

    题目链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 题目描述: 给定一个链表,删除链表的倒数第 n 个节点, ...

  4. [Swift]LeetCode19. 删除链表的倒数第N个节点 | Remove Nth Node From End of List

    Given a linked list, remove the n-th node from the end of list and return its head. Example: Given l ...

  5. 22、删除链表的倒数第N个节点

    22.删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删 ...

  6. 删除链表的倒数第N个节点(java实现)

    题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链 ...

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

    给 定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 ...

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

    题目描述: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后 ...

  9. 【LeetCode题解】19_删除链表的倒数第N个节点(Remove-Nth-Node-From-End-of-List)

    目录 描述 解法:双指针 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解笔记可以访问我的 github. 描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回 ...

随机推荐

  1. 使用Task异步执行方法_多线程_应用程序池

    偶然遇到在执行登录的方法需要发送消息队列导致登录时间过长的问题,从网上查了一些方法,先将一个简单的异步处理程序的小例子展示出来,供大家参考: 备注:该方法是从应用程序程序所在的线程池中获取线程,第一次 ...

  2. JS_正则表达式_使用字符串创建的正则表达式_反斜杠也需要添加转义符

    备注:   使用字符串创建的正则表达式:"\"也需要加转义符: var reg1=new RegExp("\\w+");       这和 直接使用:var r ...

  3. sql多表数据查询

    有时候在sql遇到一次查询多张表的全部数据例如:创建一张虚拟表A ,表A中需要有表B和表C的全部数据(表B和表C并集,如图) 有两种方法一种是使用: 1):union,不过这种查询速度比较慢 /* B ...

  4. Entity Framework Code first(转载)

    一.Entity Framework Code first(代码优先)使用过程 1.1Entity Framework 代码优先简介 不得不提Entity Framework Code First这个 ...

  5. python同步、互斥锁、死锁

    目录 同步 同步的概念 解决线程同时修改全局变量的方式 互斥锁 使用互斥锁完成2个线程对同一个全局变量各加9999999 次的操作 上锁解锁过程 总结 死锁 避免死锁 同步 同步的概念 同步就是协同步 ...

  6. 性能监控(4)–linux下的pidstat命令

    pidstat是一个可以监控到线程的监控工具,可以使用-p指定进程ID. pidstat–p <PID> [delay] [times] –u –t 可以监控线程的CPU使用率 当某一个线 ...

  7. Flex 弹性布局——笔记

    将容器指定为Flex布局 display:flex -->d-flex display:-webkit-flex /*Safari*/ *float clear vertical-align失效 ...

  8. Ext获取uuid

    Ext获取UUID 方法1:Ext.data.IdGenerator.get('uuid').generate() 方法2://创建一个uuid生成器uuidGenerator var uuidGen ...

  9. thinkphp 3.2 去除调试模式后报错,怎么解决

    1.案例一: 最近用ThinkPHP开发一个项目,本地开发测试完成上传到服务器后,第一次打开正常,再刷新页面时就出现 “页面调试错误,无法找开页面,请重试”的错误. 我就郁闷啦,明明本地设置defin ...

  10. 【vue】使用vue构建多页面应用

    先了解一些单页面和多页面的区别 mm 多页应用模式MPA 单页应用模式SPA 应用构成 由多个完整页面构成 一个外壳页面和多个页面片段构成 跳转方式 页面之间的跳转是从一个页面跳转到另一个页面 页面片 ...