当前位置:网站首页>leetcode/删除链表的倒数第n个结点
leetcode/删除链表的倒数第n个结点
2022-08-08 14:58:00 【xcrj】
代码
package com.xcrj;
/** * 剑指 Offer II 021. 删除链表的倒数第 n 个结点 * 给定一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 */
public class Solution21 {
/** * 双指针同向移动,i指向遍历的当前结点,j指向从i倒数第n个结点,当i-j=n时,j移动,最终当i指向最后1个元素是,j指向倒数第n个元素 * 往头结点之前再插入1个结点(伪头结点),可以不用单独考虑如何处理头结点 */
public ListNode removeNthFromEnd3(ListNode head, int n) {
// 构造伪头结点,往链表头之前插入了1个新的结点,可以不会单独处理倒数第n个结点是头结点的情况
ListNode dummy = new ListNode(0, head);
ListNode pi = head;
ListNode pj = dummy;
// pi先走n步
for (int i = 0; i < n; ++i) {
pi = pi.next;
}
// pi和pj同时往后走,直到pi到达尾结点,此时pj就是倒数第n个结点
while (pi != null) {
pi = pi.next;
pj = pj.next;
}
pj.next = pj.next.next;
// 伪头结点的下一个结点才是头结点
return dummy.next;
}
public static void main(String[] args) {
}
}
参考
作者:LeetCode-Solution
链接:https://leetcode.cn/problems/SLwz0R/solution/shan-chu-lian-biao-de-dao-shu-di-n-ge-ji-ydte/
来源:力扣(LeetCode)
边栏推荐
- Mysql的分布式事务原理理解
- Iptables防火墙iprange模块扩展匹配规则
- Is it safe to open an account in China Galaxy Securities?
- [Small Coder Study Room] ABC179-C: It is a miracle that the code does not count down
- 面试官:Redis 大 key 要如何处理?
- 如何成为团队核心?从写出不可维护的代码开始
- Brief description of the state of the thread
- 什么是低代码开发?大家都真的看好低代码开发吗?
- sqoop连接MySQL跟本机不一致是为什么
- 什么是发饰hair accessories?
猜你喜欢
随机推荐
基于Qt设计的课堂考勤系统(采用RDS for MySQL云数据库 )【华为云至简致远】
基于SCL语言的模拟量平均值滤波FB库功能介绍及创建FB库的具体方法
PAT甲级:1056 Mice and Rice
第一章、RPC 基础知识
瑞吉外卖学习笔记3
JS-Bom-while (calculate leap year)
UOJ#748-[UNR #6]机器人表演【dp】
企业开发小程序有什么优势?为什么要开发小程序?
掌握财富密码,运维需要了解这些技术
Introduction to Recurrent Neural Network (RNN)
依赖传递和依赖调解
投资一个约20台桩的充电站需要多少钱?多久可以实现盈利?
一打是多少个?
一万块钱能做一手尿素期货吗?尿素期货怎么做才安全?
如何成为团队核心?从写出不可维护的代码开始
hdu2475 Box
湖北钠斯网络数字藏品交易系统
领域驱动设计系列贫血模型和充血模型
如何使用 Eolink 实现 API 文档自动生成
浏览器跨域方案,适用于本地调试接口(超简单)