• LeetCode 328 奇偶链表


    LeetCode 328 奇偶链表

    https://leetcode-cn.com/problems/odd-even-linked-list/

    将链表分成奇数节点和偶数节点这两类链表,然后将偶数节点这个链表链接到奇数节点这个链表的后面即可。相较于力扣官方提供的题解,下面的代码中多了一个变量cnt用于记录所遍历到节点的序号,根据序号的奇偶性将当前节点挂到相应的链表之上。看个人吧,我觉得下面的代码要比官方题解更好理解一点。需要注意的是务必将偶数节点链表的最后一个节点(排序后链表的最后一个节点)的next给赋值为nullptr,否则力扣在判题的过程中会报错。

    class Solution {
    public:
        ListNode* oddEvenList(ListNode* head) {
            ListNode even(0), odd(0);
            ListNode *peven = &even;    // 偶
            ListNode *podd = &odd;      // 奇
    
            int cnt = 1;
            for (ListNode *p = head; p != nullptr; p = p->next) {
                if (cnt % 2) {
                    podd->next = p;
                    podd = podd->next;
                }
                else {
                    peven->next = p;
                    peven = peven->next;
                }
                ++cnt;
            }
    
            // do NOT forget this step
            peven->next = nullptr;
            podd->next = even.next;
            return odd.next;
        }
    };
    
  • 相关阅读:
    poj2739
    poj1469
    poj2010
    poj1179
    poj1778
    使用数组实现ArrayList的效果
    zgb老师关于java集合的总结
    jah老师中关于集合的总结
    继承一个类或者是实现一个接口注意点
    5、Iterator迭代器的使用
  • 原文地址:https://www.cnblogs.com/wallace-lai/p/13968544.html
Copyright © 2020-2023  润新知