2023/07/08 leetcode刷题记录

删除链表的中间节点

就是用到快慢指针,慢走一步快走两步的方法,难点就在于从哪里开始走和在哪里停下来,第一次提交出错问题在于最后的return head;,如果被删除的节点正好是head,那么返回head就出错了,所以改为return preHead->next;

代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* deleteMiddle(ListNode* head) {
        //快慢指针,走两步走一步
        ListNode preNode(0,head);
        ListNode *preHead = &preNode;
        ListNode ppNode(0,preHead);
        ListNode *ppHead = &ppNode;
        ListNode *p1 = preHead, *p2 = head, *pp = ppHead;
        while(1) {
            p1 = p1->next;
            pp = pp->next;
            if(p2 == nullptr) {
                break;
            }
            p2 = p2->next;
            if(p2 == nullptr) {
                break;
            }
            p2 = p2->next;
        }
        pp->next = p1->next;
        return preHead->next;
    }
};

奇偶链表

代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* oddEvenList(ListNode* head) {
        //1->next = 1->next->next;
        //2->next = 2->next->next;
        if(head == nullptr) {
            return head;
        }
        ListNode* p1 = head, *p2 = head->next;
        ListNode* t2 = head->next;
        while(p1 && p2) {
            if(p1->next) {
                p1->next = p1->next->next;
            }
            if(p2->next) {
                p2->next = p2->next->next;
            }
            if(p1->next) {
                p1 = p1->next;
            }
            else {
                break;
            }
            p2 = p2->next;
        }
        p1->next = t2;
        return head;
    }
};
posted @ 2023-07-08 15:25  三文咸鱼  阅读(12)  评论(0)    收藏  举报