楼主:
Rushia (みけねこ的鼻屎)
2022-09-28 10:06:5319. Remove Nth Node From End of List
移除链结串行后面数来的第n个节点,题目保证n必定小于串行长度。
思路:
1.用快慢指针来求解
2.先让快指针走n步,再来快慢指针一起走直到快指针为null
3.慢指针最后会停在要被删除的元素之前,将他指向下下个元素
4.避免遇到要删除的节点是头节点,我们用一个dummy作为头节点,快指针也改
成多走一步。
5.返回dummy.next
Java Code:
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode dummy = new ListNode(0);
ListNode slow = dummy, fast = dummy;
slow.next = head;
for(int i = 1; i <= n + 1; i++) {
fast = fast.next;
}
while(fast != null) {
slow = slow.next;
fast = fast.next;
}
slow.next = slow.next.next;
return dummy.next;
}
}
之前写过了 当作复习
这题满经典的