当前位置:网站首页>Leetcode19. Delete the penultimate node of the linked list [double pointer]
Leetcode19. Delete the penultimate node of the linked list [double pointer]
2022-07-07 22:49:00 【Qingshan's green shirt】
LeetCode19. Delete the last of the linked list N Nodes
List of articles
1. subject

2. Ideas
1. My own thinking is very simple and rough , Namely :
(1) Find the length of the linked list (2) Change the reciprocal into a positive number by calculation (3) Delete node
Pay attention to the special judgment header !! It is convenient to use sentinel nodes to handle header nodes !!
2. Simplified edition —— With two pointers , Just one scan
The following are implemented respectively .
3. Code implementation
(1) Reverse sequence to positive sequence
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
int size = 0;// Chain length
ListNode* dummyHead = new ListNode(-1,head);// Sentinel node
ListNode* p = dummyHead;
while(p->next!= NULL)// First traversal : Statistical list length
{
p = p->next;
size++; // Chain length
}
int a = size-n+1;// The location of the positive order of the node to be deleted from 1 Start !!
if(a == 1)// Special judgment head node
{
ListNode*q = head;
dummyHead->next = head->next;
head = head->next;// Connecting nodes
delete q;
delete dummyHead;
return head;
}
else// Other situations
{
ListNode *q = dummyHead;
// Start from the sentinel node Just go The positive order of the node to be deleted -1 Step by step
int cnt = size-n;
while(cnt--)// Second traversal
q = q->next;
ListNode *m = q->next;
q->next = m->next;// Connecting nodes
delete m;
delete dummyHead;
return head;
}
}
};
matters needing attention
1. Pay attention to the topic condition :n It must be size Within the scope of
2. A little summary , I feel like I think about it every time I'm here , It's a bit of a waste of time :
Statistical list length , If you start from the sentinel node, usewhile(p->next!= NULL)
Starting from the beginning iswhile(p != NULL)
(2) Double pointer
The most important thing is to omit the steps of calculating the length of the linked list !! There is no need to judge the head node !!
Implementation point :1. Sentinel node 2. Double pointer
See notes for ideas :
class Solution {
public:
ListNode* removeNthFromEnd(ListNode* head, int n) {
ListNode* dummyHead = new ListNode(-1,head) ;
ListNode* fast = dummyHead;// Quick pointer
ListNode* slow = dummyHead;// Slow pointer
int a = n+1;
//1. Let's go first n+1 Step —— In order to synchronize the time in the later stage slow Point to the previous node to be deleted , Convenient operation
while(a--)
fast = fast->next;// Back ward n+1 Step
//2. The speed pointer moves synchronously ,
while(fast!=NULL)
{
slow = slow->next;
fast = fast->next;
} // here slow Point to the previous node of the node to be deleted
//3. Delete operation
ListNode*p = slow->next;
slow->next = p->next;
delete p;
return dummyHead->next; // Note that there !
}
};
1. Special attention should be paid to the last sentence
return dummyHead->next;
Because the original head node head May have been deleted , The new head node is dummyHead->next.
2.n The value of must be reasonable , So don't think too much ! There will be no empty fingers !
边栏推荐
- Form组件常用校验规则-2(持续更新中~)
- OpenGL configure assimp
- 新版代挂网站PHP源码+去除授权/支持燃鹅代抽
- [problem] pytorch installation
- Use blocconsumer to build responsive components and monitor status at the same time
- 23. Merge K ascending linked lists -c language
- Redis cluster installation
- 行测-图形推理-5-一笔画类
- Anti climbing killer
- Dbsync adds support for mongodb and ES
猜你喜欢

微服务远程Debug,Nocalhost + Rainbond微服务开发第二弹
苹果在iOS 16中通过'虚拟卡'安全功能进一步进军金融领域

How to judge whether the input content is "number"

Visual studio 2019 installation

Micro service remote debug, nocalhost + rainbow micro service development second bullet

如何选择合适的自动化测试工具?

Ni9185 and ni9234 hardware settings in Ni Max

Customer case | China law network, through observing the cloud, greatly shortens the time of fault location

OpenGL configuration vs2019

详解全志V853上的ARM A7和RISC-V E907之间的通信方式
随机推荐
The essence of analog Servlet
Pdf document signature Guide
IP network active evaluation system -- x-vision
Debezium系列之: 支持在 KILL 命令中使用变量
php 记录完整对接腾讯云直播以及im直播群聊 所遇到的坑
Debezium系列之:源码阅读之BinlogReader
OpenGL configuration vs2019
Build an "immune" barrier in the cloud to prepare your data
Unity technical notes (I) inspector extension
Leetcode206. Reverse linked list
Aspose. Words merge cells
Common verification rules of form components -2 (continuously updating ~)
Vs custom template - take the custom class template as an example
Revit secondary development - get the project file path
Yarn开启ACL用户认证之后无法查看Yarn历史任务日志解决办法
Failed to initialize rosdep after installing ROS
How to choose the appropriate automated testing tools?
Unity FAQ (I) lack of references
微服务架构开源框架详情介绍
Matplotlib quick start