LeetCode.M19.删除链表的倒数第N个结点
LeetCode.M19
题目:
题目大意:
给定一个链表和一个数n,删除倒数第n个数。
数据范围:
如图所示
思路:
采用双指针。思路和找到数组中倒数第n个数一致,只不过这里需要找到链表的倒数第n+1个元素,这样的话,才可以把倒数第n个数删掉。注意也有可能要求删除第一个结点(倒数最后一个节点),这里我们为了保持操作的一致性,在第一个节点的前面新增加一个头结点headNode。
然后进行双指针操作,初始时pi = pj = headNode, k = 1。
在k < n + 1时,只有pi在移动。
在 k >= n + 1时,pi和pj一起移动。
在pi.next == null 的时候,pj所处的位置正是倒数第n + 1个节点x的位置,
现在将倒数第n个节点删除(x.next = x.next.next)。
注意返回时,返回headNode.next,因为我们在第一个节点前增加了一个头结点。
代码:
import java.util.List;class ListNode{int val;ListNode next;ListNode(){}ListNode(int val) {this.val = val;}ListNode(int val, ListNode next) {this.val = val;this.next = next;}
}class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode headNode = new ListNode();headNode.next = head;ListNode pi = headNode, pj = headNode;int k = 1;while (pi.next != null){if (k >= n + 1){pj = pj.next;}pi = pi.next;k ++ ;}pj.next = pj.next.next;return headNode.next;}
}public class Main {public static void main(String[] args) {Solution solution = new Solution();ListNode node1 = new ListNode(1);ListNode node2 = new ListNode(2);ListNode node3 = new ListNode(3);ListNode node4 = new ListNode(4);ListNode node5 = new ListNode(5);node1.next = node2;node2.next = node3;node3.next = node4;node4.next = node5;ListNode head = solution.removeNthFromEnd(node1, 1);while (head != null){System.out.print(head.val + ", ");head = head.next;}System.out.println();}
}
时空复杂度分析等:
时间复杂度 : O(n)
空间复杂度 : O(1)
题目链接:
19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode)
LeetCode.M19.删除链表的倒数第N个结点相关推荐
- 29. Leetcode 19. 删除链表的倒数第 N 个结点 (链表-双指针)
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点.示例 1:输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2:输入:head = [1], ...
- leetcode 19. 删除链表的倒数第 N 个结点(双指针应用)
给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 示例 1: 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入:head = [1 ...
- LeetCode 19 删除链表的倒数第 N 个结点
https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 解决方案 class Solution {public ListN ...
- leetcode 19. 删除链表的倒数第 N 个结点(c++)
思路分析 常规解法:双指针与栈,两种解法 题解1 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListN ...
- 【力扣(LeetCode)】【C/C++】【19.删除链表的倒数第 N 个结点】
学习时间: 2023年1月30日 题目描述: 题解分享: // 作 者 : 繁 华 倾 夏 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h&g ...
- 《LeetCode力扣练习》第19题 删除链表的倒数第 N 个结点 Java
<LeetCode力扣练习>第19题 删除链表的倒数第 N 个结点 Java 一.资源 题目: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 示例 1: 输入:hea ...
- LeetCode Algorithm 19. 删除链表的倒数第 N 个结点
19. 删除链表的倒数第 N 个结点 Ideas 链表经典题目,还是09年考研408数据结构最后一道大题,在LeetCode上只能算中等难度的题目. 说回题目其实不难,之前跟着左神练了很多双指针的题目 ...
- 【LeetCode】【HOT】19. 删除链表的倒数第 N 个结点(双指针)
[LeetCode][HOT 100]19. 删除链表的倒数第 N 个结点 文章目录 [LeetCode][HOT 100]19. 删除链表的倒数第 N 个结点 package hot;import ...
- [链表|多解法] leetcode 19 删除链表的倒数第N个节点
[链表|多解法] leetcode 19 删除链表的倒数第N个节点 1.题目 题目链接 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2-&g ...
最新文章
- java验证码局部刷新_JS局部刷新图形验证码
- 语言 班费管理系统源代码_固定资产管理系统开源的各种语言翻译
- Black Hat 2017黑帽大会:8款值得一看的黑客工具
- 【三维路径规划】基于matlab A_star算法无人机山地三维路径规划【含Matlab源码 266期】
- 一图助你搞明白Spring应用上下文初始化流程!
- wps vba宏插件_wps下载_wps下载免费完整版客户端[办公软件]
- centos7轻松搭建文件服务器
- php 随机输出字符串,如何使用PHP生成随机字符串
- Linux环境安装Postgresql报错。configure: error: zlib library not found
- day19 文件操作
- java HotSpot 内存管理白皮书
- 美团App用户界面分析
- 从ReentrantLock到AQS
- JAVA---冒泡排序
- 《信息与编码》考试复习笔记6----第六章连续信源熵和信道容量(考点在连续信道容量)
- 建筑材料行业采购合同电子化,数商云采购商城系统助力企业采购业务更规范高效
- vsco和lr哪个好_vsco、泼辣修图、snapseed哪个好用?使用对比
- 聊聊API网关的作用
- ReactNative 原生UI组件 桥接原生 Android
- 微软暑期实习Explore Program面经(已Offer)
热门文章
- Flask学习之旅——2.2 模板过滤器
- 计算机基础office快捷键全称,常用Office Word办公软件快捷键介绍
- 知乎刷爆朋友圈的H5,回答了周源年初提出的几个问题
- 原生js开发canvas双人射击游戏
- Apache .htaccess规则RewriteCond 和RewriteRule-实操解释说明
- Apache中RewriteCond规则参数介绍
- 程序员如何轻松引起猎头公司的注意,并拿到高薪offer,逃不过这8条定律!
- 安泰ATA-1372A宽带放大器技术参数
- python 二次平滑_Python 指数平滑
- 总线收发器有什么作用?