给你一个链表,删除链表的倒数第 n
个结点,并且返回链表的头结点。
解题思路:暴力破解
1.先遍历链表,计算链表有多少个节点,记为count;
2.倒数第N个节点,为链表的第count-N+1个节点;
3.设置虚拟头节点,处理count=N的情况。
public static ListNode removeNthFromEnd(ListNode head, int n) {
ListNode dummyHead=new ListNode(-1); //设置虚拟头节点
dummyHead.next=head;
ListNode curNode=dummyHead;
int count = 0;
//先遍历到链表尾,算一下有多少个结点
while (curNode != null) {
curNode = curNode.next;
count++;
}
int j = count - n+1;
curNode = dummyHead;
for (int i = 1; i < j-1; i++) {
curNode = curNode.next;
}
curNode.next = curNode.next.next;
return dummyHead.next;
}