leetcode 19. 删除链表的倒数第N个节点 JAVA
题目:
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
解题思路:
使用两个节点,一个是p一个是q。先让p走n步,然后再让p和q同时往前走,当p走到头时,q即是倒数第n+1个节点了。令p.next = p.next.next则删除了倒数第n个结点
但有两种特殊情况:1.链表长度小于n,则返回原链表
2.链表长度为n,则返回head.next
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode p = head;
int i;
for(i = 0; i < n; i++) //用于判断链表长度
{
p = p.next;
if(p == null)
break;
}
if(i == n - 1 && p ==null) //链表长度为n时,删除头结点
return head.next;
if(i < n - 1 && p == null) //如果链表长度小于n,则返回原链表
return head;
ListNode q = head;
while(p.next != null)
{
p = p.next;
q = q.next;
}
q.next = q.next.next;
return head;
}
}
leetcode 19. 删除链表的倒数第N个节点 JAVA的更多相关文章
- Java实现 LeetCode 19删除链表的倒数第N个节点
19. 删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当 ...
- LeetCode 19——删除链表的倒数第N个节点(JAVA)
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 ...
- [LeetCode] 19. 删除链表的倒数第N个节点
题目链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 题目描述: 给定一个链表,删除链表的倒数第 n 个节点, ...
- LeetCode 19——删除链表的倒数第 N 个节点
1. 题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后 ...
- [LeetCode] 19. 删除链表的倒数第N个节点 ☆☆☆
描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表 ...
- LeetCode 19. 删除链表的倒数第N个节点(Remove Nth Node From End Of List)
题目描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后, ...
- LeetCode 19.删除链表的倒数第N个节点(Python)
题目: 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点 ...
- LeetCode 19 - 删除链表的倒数第N个节点 - [链表]
题目链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 题解: 两个 $p,q$ 指针均指向头,然后 $q$ 先 ...
- 19. 删除链表的倒数第N个节点
19. 删除链表的倒数第N个节点 题意 删除链表的倒数第N个结点 解题思路 先让快结点移动n个位置,接着再让慢结点和快结点同时移动,发现出慢结点就是要删除的结点,将前结点指向删除结点的下一个结点即可: ...
随机推荐
- javax.persistence.TransactionRequiredException: No transactional EntityManager available
在操作中加上@Transcational注解,一般是用于修改或者删除操作.
- 操作SQL Server的帮助类
可作为以后开发的参考代码,也可以再整理下,代码如下: using System; using System.Collections.Generic; using System.Linq; using ...
- Linux实战教学笔记35:企业级监控Nagios实践(下)
七,服务器端Nagios图形监控显示和管理 前面搭建的Nagios服务虽然能显示信息,能报警.但是在企业工作中还会需要一个历史趋势图,跟踪每一个业务的长期趋势,并且能以图形的方式展示,例如:根据磁盘的 ...
- DBArtist之Oracle入门第3步: 安装配置PL/SQL Developer
操作系统: WINDOWS 7 (64位) 数据库: Oracle 11gR2 (64位) PL/SQL Developer : PL/SQL ...
- faster-rcnn训练自己的数据集参考文章
https://www.cnblogs.com/CarryPotMan/p/5390336.html
- cannot import name '_validate_lengths' from 'numpy.lib.arraypad'
在Anaconda下新配置了tensorflow环境,结果在引入skimage 包时报错,错误提示from numpy.lib.arraypad import _validate_lengths,找不 ...
- 66. Plus One 数组加1
[抄题]: Given a non-negative integer represented as a non-empty array of digits, plus one to the integ ...
- linux操作系统下,怎么使用kill按照PID一次杀死多个进程
1.ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs kill -s 9 说明:“grep firefox”的输出结果是,所有含有关 ...
- C++代码静态分析工具splint
1.引言 最近在项目中使用了静态程序分析工具PC-Lint, 体会到它在项目实施中带给开发人员的方便.PC-Lint是一款针对C/C++语言.windows平台的静态分析工具,FlexeLint是针对 ...
- Siverlight MarkerSize 控制数据点半径大小 LineThickness 控制点与点之间直线的厚度
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...