LeetCode解题记录(19)——删除链表的倒数第N个节点
2020-01-13 17:03
288 查看
LeetCode解题记录——删除链表的倒数第N个节点
题目说明
给定一个链表,删除链表的倒数第 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) { if(head == NULL)//空链表 return head; ListNode *pre = head,*a = head,*b = head; while(n>0&&b!=NULL){//移动至相对位置 b = b->next; n--; } if(n != 0)//若n大于链表长度 return head; if(b == NULL)//若恰好删除头元素 return head->next; while(b!=NULL){//同步向后移动 pre = a; a = a->next; b = b->next; } pre->next = a->next;//删除元素 return head; } };
所有代码都可以在我的github上找到:LeetCode
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- leetcode19 Remove Nth Node From End of List(删除链表的倒数第N个节点)
- leetcode19--删除链表中倒数第n个节点
- LeetCODE 19 删除链表的倒数第N个节点
- leetcode-19. Remove Nth Node From End of List(删除链表倒数第N个节点)
- leetcode19删除链表的倒数第N个节点(C语言版)
- C++ LeetCode 19 删除链表的倒数第N个节点
- Leetcode 19.删除链表的倒数第N个节点
- LeetCode-19 删除链表的倒数第N个节点(一遍扫描)
- leetcode-19-删除链表的倒数第N个节点
- [LeetCode-19] Remove Nth Node From End of List(删除链表中倒数第N个节点)
- Leetcode做题日记:19. 删除链表的倒数第N个节点(PYTHON)
- leetcode 19 删除链表的倒数第N个节点(快慢指针)
- LeetCode 19: 删除链表的倒数第N个节点 C++实现
- leetcode 19: 删除链表的倒数第N个节点
- Leetcode 19 删除链表的倒数第N个节点【链表】
- [LeetCode] 19. Remove Nth Node From End of List 删除链表的倒数第N个节点 @python
- LeetCode 19. 删除链表的倒数第N个节点
- 【LeetCode题解】19_删除链表的倒数第N个节点(Remove-Nth-Node-From-End-of-List)
- LeetCode-19删除链表的倒数第n个节点
- 【Leetcode】19. 删除链表的倒数第N个节点