题目链接:https://leetcode.com/problems/remove-nth-node-from-end-of-list/
题目:
Given a linked list, remove the nth node from the end of list and return its head.
For example,
Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked list becomes 1->2->3->5.
Note:
Given n will always be valid.
Try to do this in one pass.
解题思路:要求删除倒数第N个数,由于链表的顺序搜索特性。所以改变思想,引用两个链表 L1,L2。L1先顺序搜索N个数,然后L1,L2再一起搜索直到L1到底,删除L2的这个点就行。
class Solution {
public:
ListNode *removeNthFromEnd(ListNode *head, int n) {
ListNode *point = head;
ListNode *answers = head;
ListNode *change = head;
for (int i = 0; i < n; i++) {
if (point->next == NULL) return answers->next;
point = point->next;
}
while(point->next != NULL) {
head = head->next;
point = point->next;
}
head->next = head->next->next;
return answers;
}
};
转载请注明作者:vanish_dust