双指针
pre靠前,qtr靠后。当qtr到末尾,pre的下一个元素即为需要删除元素。
为了保证操作统一,需要加入一个虚拟节点。
public ListNode removeNthFromEnd (ListNode head, int n) {
// write code here
ListNode dummyNode = new ListNode(0);
dummyNode.next = head;
ListNode pre = dummyNode, qtr = dummyNode;
while(qtr != null && n > 0){
qtr = qtr.next;
n--;
}
while(qtr != null && qtr.next != null){
pre = pre.next;
qtr = qtr.next;
}
pre.next = pre.next.next;
return dummyNode.next;
}
京公网安备 11010502036488号