LeetCode上第328号问题:Odd Even Linked List

题目

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

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

示例 1:

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

示例 2:

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

说明:

  • 应当保持奇数节点和偶数节点的相对顺序。

  • 链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。

解题思路

这道题给了我们一个链表,让我们分开奇偶节点,所有奇节点在前,偶节点在后。

  • 设定两个虚拟节点,dummyHead1用来保存奇节点,dummyHead2来保存偶节点;

  • 遍历整个原始链表,将奇节点放于dummyHead1中,其余的放置在dummyHead2

  • 遍历结束后,将dummyHead2插入到dummyHead1后面

动画演示

动画演示GIF有点大,请稍微等待一下加载显示^_^

参考代码


我们会在每天早上8点30分准时推送一条LeetCode上的算法题目,并给出该题目的动画解析以及参考答案,每篇文章阅读时长为五分钟左右。



©著作权归作者所有:来自51CTO博客作者mb5fe18fab305a5的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 动画:面试算法之求二叉树的下一节点
  2. php+nodeJs+thrift协议,实现zookeeper节点数据自动发现
  3. 用php输出一个数组中的偶数或奇数的方法
  4. jQuery的DOM操作实例(3)——创建节点&&编写一个弹窗
  5. jQuery编程基础精华02(属性、表单过滤器,元素的each,表单选择器,子元
  6. 如何在java脚本中获取节点内部文本?
  7. Study JQuery《zTree自动点击第一个节点》
  8. 如何使用ajax GET或POST方法将数据传递到amazon lambda节点。js
  9. 用jquery技术实现table的奇数行变色

随机推荐

  1. Android音频架构解析
  2. android TabHost选项卡示例
  3. Android多线程同步转异步方法总结
  4. Android Studio 2.0 Preview发布,附下载
  5. android开发每日汇总【2011-11-02】
  6. Android带播放进度条的音乐播放器
  7. Android一些好的资源
  8. Android开发环境搭建教程
  9. Android设置颜色
  10. Android(安卓)设备唯一标识(多种实现方案)