Day11 2022.11.17 双指针(简单)
18.删除链表的节点
自己实现
直接遍历就行了
代码如下:
class Solution {
public:
ListNode* deleteNode(ListNode* head, int val) {
if(head==NULL)return NULL;
ListNode* now=head;
if(head->val==val)return head->next;
while(now->next!=NULL)
{
if(now->next->val==val)
{
now->next=now->next->next;
break;
}
now=now->next;
}
return head;
}
};
代码表现
22.链表中倒数第k个节点
自己实现
根据需要的k,创建两个节点指针front
, back
。back=front(->next)*(k-1)
。当back->next==NULL
时,返回front
即可
代码如下:
class Solution {
public:
ListNode* getKthFromEnd(ListNode* head, int k) {
if(head==NULL)return NULL;
ListNode* front=head;
ListNode* back=head;
for(int i=0;i<k-1;i++)back=back->next;
while(back->next!=NULL)
{
front=front->next;
back=back->next;
}
return front;
}
};
代码表现
hint:
- 积累这种双指针的方法