思路
首先计算出链表的长度,然后删除第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;}
}