思路
首先计算出链表的长度,然后删除第n个节点即可,但要注意考虑特殊情况
解题方法
特殊情况:1.删除节点为最后一个节点
2.删除节点为头结点
Code
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode t=head;
int len=0;
while(t!=null){
len++;
t=t.next;
}
if(n==len) return head.next;
t=head;
for(int i=1;i<len-n;i++){
t=t.next;
}
if(t.next==null){
t=null;
}else if(t.next.next!=null){
t.next=t.next.next;
}else{
t.next=null;
}
return head;
}
}