剑指Offer-第11天 双指针(简单)
第一题
题目链接:https://leetcode.cn/problems/shan-chu-lian-biao-de-jie-dian-lcof/
个人题解:双指针遍历即可
代码:
class Solution {
public:
ListNode* deleteNode(ListNode* head, int val) {
if(head->val == val) return head->next;
ListNode *pre = head, *cur = head->next;
while(cur != nullptr && cur->val != val) {
pre = cur;
cur = cur->next;
}
if(cur != nullptr) pre->next = cur->next;
return head;
}
};
运行截图:
第二题
题目链接:https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/
个人题解:先让一个指针走到 \(k\) 个位置,然后再来一个指针,让它们之间的距离保持在一个固定值
代码:
class Solution {
public:
ListNode* getKthFromEnd(ListNode* head, int k) {
auto p=head, q=head;
while(k--){
if(p) p=p->next;
else return NULL;
}
while(p) q=q->next, p=p->next;
return q;
}
};
运行截图: