思路:
1.求链表的长度length
2.如果要删除的时头结点,即length==n,直接返回头结点的下一个结点。
3.若非头结点,则找到待删除结点的父结点,即第length-n-1个。
4.将父结点的子节点指向子结点的子结点。
5.返回head
public ListNode removeNthFromEnd (ListNode head, int n) {
// write code here
int length=0;
ListNode p=head;
while(p!=null){
length++;
p=p.next;
}
if(length==n){
return head.next;
}
ListNode tmp=head;
for(int i=0;i<length-n-1;i++){
tmp=tmp.next;
}
tmp.next=tmp.next.next;
return head;
}
京公网安备 11010502036488号