美文网首页
328. 奇偶联表

328. 奇偶联表

作者: 游吟斯基 | 来源:发表于2019-03-07 15:34 被阅读0次

题目

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。

请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。

示例

输入: 1->2->3->4->5->NULL
输出: 1->3->5->2->4->NULL

审题

1. 逻辑上,奇偶index分开,也就是分成奇数链表和偶数链表,然后两个链表合并。
2. 空间复杂度O(1),不能创建新的链表。
3. 时间复杂度O(n),不能嵌套循环。

算法

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode* oddEvenList(ListNode* head) {
        if (head == nullptr || head->next == nullptr) {
            return head;
        }

        ListNode* odd_node = head;              // 奇数链表
        ListNode* even_node = head->next;       // 偶数链表
        ListNode* even_node_head = even_node;   // 偶数链表头,链表合并使用
        while (odd_node->next != nullptr && even_node->next != nullptr) {
            // 奇数链表的next为原链接偶数index的next
            odd_node->next = even_node->next;
            odd_node = odd_node->next;

            // 偶数链表的next为原链接奇数index的next
            even_node->next = odd_node->next;
            even_node = even_node->next;
        }

        // 奇偶链表合并
        odd_node->next = even_node_head;

        return head;
    }
};

相关文章

  • 328. 奇偶联表

    题目 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶...

  • 328. Odd Even Linked List

    题目[328. Odd Even Linked List](328. Odd Even Linked List) ...

  • 偶联

    今天一早同窗发给我一个寄语 看完寄语,忽然想起了苏轼的一首诗《和子由渑池怀旧》: 人生到处知何似, 应似飞鸿踏雪泥...

  • 2019-03-03

    LeetCode 328. Odd Even Linked List Description Given a si...

  • 妙手偶联

    未历红尘说看破,巧夺天工叹思成。 陶然有亭陶然亭,千岛湖非湖千岛湖。 自恃才高,谦益之。人道德馨,满损诸。 雾锁群...

  • ADC 抗体偶联药物通过连接子 linker 连接而成 | Me

    ADC 抗体偶联药物作用机理 ADC 抗体偶联药物是将高特异性的单克隆抗体 (antibody) 与高活性的小分子...

  • Python数据结构-链表Ⅱ(Linked List)

    328. 奇偶链表[https://leetcode-cn.com/problems/odd-even-linke...

  • LeetCode学习计划:LeetCode 75-Level-2

    328. 奇偶链表[https://leetcode.cn/problems/odd-even-linked-li...

  • 328.

    对于英语来说,最重要的基础莫过于单词和语法。单词的记忆无疑是枯燥的,但是单词的讲解却可以是有趣的。 学习英语的目的...

  • 基于载体蛋白KLH, BSA, OVA偶联的多肽抗体制备

    肽-载体蛋白偶联多用于制备抗多肽类抗体,单独的多肽通常太小不足以激起充分的免疫反应,而带有很多抗原表位的载体蛋白有...

网友评论

      本文标题:328. 奇偶联表

      本文链接:https://www.haomeiwen.com/subject/iivcpqtx.html