题解 | #牛群的编号重排#

牛群的编号重排

https://www.nowcoder.com/practice/2e4baac1b994494e83a7c0b17b97ac2d

/**
 * struct ListNode {
 *  int val;
 *  struct ListNode *next;
 *  ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param head ListNode类
     * @return ListNode类
     */

    void postInsert(ListNode& a, ListNode& b) {
        ListNode* tmp = a.next;
        a.next = &b;
        b.next = tmp;
    }

    ListNode* reorderCows(ListNode* head) {
        ListNode* evenNodeHead = nullptr;
        ListNode* evenNodeRear = nullptr;
        ListNode* oddNodeHead = nullptr;
        ListNode* oddNodeRear = nullptr;

        ListNode* tmpNode = head;
        ListNode* tmpNode2;

        int cnt = 1;

        while (tmpNode != nullptr) {
            tmpNode2 = tmpNode->next;
            tmpNode->next = nullptr;
            if (cnt % 2 == 0) {
                if (evenNodeHead == evenNodeRear) {
                    if (evenNodeHead == nullptr) {
                        evenNodeHead = tmpNode;
                        evenNodeRear = tmpNode;
                    } else {
                        evenNodeRear = tmpNode;
                        evenNodeHead->next = evenNodeRear;
                    }
                } else {
                    evenNodeRear->next = tmpNode;
                    evenNodeRear = tmpNode;
                }
            } else {
                if (oddNodeHead == oddNodeRear) {
                    if (oddNodeHead == nullptr) {
                        oddNodeHead = tmpNode;
                        oddNodeRear = tmpNode;
                    } else {
                        oddNodeRear = tmpNode;
                        oddNodeHead->next = oddNodeRear;
                    }
                } else {
                    oddNodeRear->next = tmpNode;
                    oddNodeRear = tmpNode;
                }
            }
            tmpNode = tmpNode2;
            cnt += 1;
        }

        oddNodeRear->next = evenNodeHead;
        return oddNodeHead;

    }
};

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务