给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点。
进阶:你能尝试使用一趟扫描实现吗?
输入:head = [1,2,3,4,5], n = 2
输出:[1,2,3,5]
示例 2:
输入:head = [1], n = 1
输出:[]
示例 3:
输入:head = [1,2], n = 1
输出:[1]
class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode rNode=reverseNode(head); if(n==1){ rNode=rNode.next; return reverseNode(rNode); } int index=1; ListNode cur=rNode; while(cur.next!=null){ index++; if(index==n){ cur.next=cur.next.next; }else{ cur=cur.next; } } return reverseNode(rNode); } public ListNode reverseNode(ListNode head){ ListNode pre=null; ListNode cur=head; while(cur!=null){ ListNode next=cur.next; cur.next=pre; pre=cur; cur=next; } return pre; } }