题目:
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2.
当删除了倒数第二个节点后,链表变为 1->2->3->5.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
两次遍历:
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode current=head;
int len=1;
while(current.next!=null)
{
current=current.next;
len=len+1;
}
int x=len-n;
if(x==0)
{
head=head.next;
}
else
{
x--;
ListNode _current=head;
for(int i=0;i<x;i++)
{
_current=_current.next;
}
_current.next=_current.next.next;
}
return head;
}
结果执行用时 :0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗 :37.6 MB, 在所有 Java 提交中击败了5.01%的用户
双指针:
public ListNode removeNthFromEnd(ListNode head, int n) {
if(head==null||head.next==null){
return null;
}
ListNode first=head;
ListNode Second=head;
for(int i=0;i<n;i++){
Second=Second.next;
}
if(Second==null){
head=head.next;
}
else{
while(Second.next!=null){
Second=Second.next;
first=first.next;
}
first.next=first.next.next;
}
return head;
}