当前位置: 代码迷 >> 综合 >> C++ 笔试每日一题(leetcode 之删除链表的倒数第 n 个节点)
  详细解决方案

C++ 笔试每日一题(leetcode 之删除链表的倒数第 n 个节点)

热度:70   发布时间:2024-01-25 23:06:18.0

 

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。

示例:

给定一个链表: 1->2->3->4->5, 和 n = 2.

当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:

给定的 n 保证是有效的。

 

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* fastpoint=(struct ListNode*) malloc(sizeof(ListNode));ListNode* slowpoint=(struct ListNode*) malloc(sizeof(ListNode));ListNode*  dummy=(struct  ListNode*)   malloc(sizeof(ListNode));dummy->next=head;fastpoint=dummy;slowpoint=dummy;for(int i=1;i<=n;++i){fastpoint=fastpoint->next;} while(fastpoint->next!=NULL){fastpoint=fastpoint->next;slowpoint=slowpoint->next;}slowpoint->next=slowpoint->next->next;return dummy->next;}
};