题目描述
给定一个链表,删除链表的倒数第n个节点并返回链表的头指针
例如,
给出的链表为:1->2->3->4->5, n= 2.
删除了链表的倒数第n个节点之后,链表变为1->2->3->5.
备注:
题目保证n一定是有效的
请给出请给出时间复杂度为\ O(n) O(n)的算法
示例1
输入
复制
{1,2},2
输出
复制
{2}
import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @param n int整型
* @return ListNode类
*/
public ListNode removeNthFromEnd (ListNode head, int n) {
// 求出链表长度
//求出要删除结点的前一个节点
//将要删除结点的前一个节点指向 .next.next
//注意temp>1
ListNode p=head;
int len=0;
if(p==null)return null;
else{
while(p!=null){
p=p.next;
++len;
}
if(len ==n) return head.next;
int temp=len-n;
while(temp>1){
p=p.next;
temp--;
}
p.next=p.next.next;
return head;
}
}
}
这是一个关于链表数据结构的问题,要求在给定的链表中删除倒数第n个节点,并返回修改后的链表头指针。解决方案首先计算链表长度,然后找到目标节点的前一个节点,将它指向目标节点的下一个节点,从而完成删除操作。该算法的时间复杂度为O(n),符合题目要求。

307

被折叠的 条评论
为什么被折叠?



