剑指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;
    }
};

运行截图:

相关