剑指offer——Day11 双指针(简单)

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, backback=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:

  • 积累这种双指针的方法
posted @ 2022-11-21 23:54  神鹏佐佑  阅读(24)  评论(0)    收藏  举报