美文网首页
【链表】 奇偶链表

【链表】 奇偶链表

作者: Spring_java | 来源:发表于2021-01-20 14:54 被阅读0次

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/odd-even-linked-list

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

代码:

          if(head==null){
                return null;
         }
        ListNode node2=head.next;
        ListNode odd=head;
        ListNode even=node2;

        while(even!=null && even.next!=null){
                odd.next=even.next;
                odd=odd.next;
                even.next=odd.next;
                even=even.next;
        }
        odd.next=node2;
        return head;
    }

思路:
对于原始链表,每个节点都是奇数节点或偶数节点。头节点是奇数节点,头节点的后一个节点是偶数节点,相邻节点的奇偶性不同。因此可以将奇数节点和偶数节点分离成奇数链表和偶数链表,然后将偶数链表连接
在奇数链表之后,合并后的链表即为结果链表。

原始链表的头节点 head 也是奇数链表的头节点以及结果链表的头节点,head 的后一个节点是偶数链表的头节点。令 evenHead = head.next,则 evenHead 是偶数链表的头节点。

维护两个指针 odd 和 even 分别指向奇数节点和偶数节点,初始时 odd = head,even = evenHead。通过迭代的方式将奇数节点和偶数节点分离成两个链表,每一步首先更新奇数节点,然后更新偶数节点。

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/odd-even-linked-list/solution/qi-ou-lian-biao-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

  • 奇偶链表排序

    奇偶链表排序

  • 【链表】 奇偶链表

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

  • 链表--奇偶链表

    目录[https://www.jianshu.com/p/85e18c21317a] 题号[https://lee...

  • 单向链表-奇偶链表

    今天学习的算法是奇偶链表,自己实现后发现虽然方法大致思路是对的。但是最后提交完看解题答案发现竟然还可以这么简单。 ...

  • 奇偶链表

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

  • 奇偶链表

  • 奇偶链表

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

  • leetcode链表之奇偶链表

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

  • 奇偶链表-python

    感觉这题是比较经典的题,做个记录. 题目描述: 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这...

  • LeetCodeDay42 —— 奇偶链表★★

    328. 奇偶链表(Odd Even Linked List) 简述 给定一个单链表,把所有的奇数节点和偶数节点分...

网友评论

      本文标题:【链表】 奇偶链表

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