首先,用一个循环来得到链表的长度
然后把删除的节点分为第一个节点和其他节点,第一个节点删除方式和其他的不一样
删除节点,关键在于找到前一个节点位置,给的是倒数的数,例如有五个,删除倒数第二个,就是删除第四个,我们要找到第三个链表长度为m,删除倒数第n个,要找到第m-n个节点
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) {
// write code here
int len=0;
ListNode res=new ListNode(0);
ListNode temp=head;
while (temp!=null){//获得链表长度
temp=temp.next;
len++;
}
temp=head;
int count=1;
if (len==n){//判断是否是第一个节点
res.next=head.next;
return res.next;
}else {
while (count!=len-n){//这里我们要找到要删除的前一个节点,才可以删除目标节点
temp=temp.next;
count++;
}
temp.next=temp.next.next;//删除语句
}
return head;
}
} 
京公网安备 11010502036488号