[算法分析与设计] leetcode 每周一题: 328. Odd Even Linked List
来源:互联网 发布:创维46e60hr 网络酷开 编辑:程序博客网 时间:2024/05/29 04:33
题目链接:
328. Odd Even Linked List
题目大意:
给定一个单向链表, 将链表中所有奇数位(序号为 2n + 1, n ∈ N) 的节点全部移到一起, 并放在偶数位的节点的前面 ;
( 题中还注明: 要求是 O(1) 的空间复杂度 和 O(n) 的时间复杂度, n 表示节点数 ; 且各节点间的相对位置保持不变(也即要求算法稳定) ; 同时链表中第一个节点视为奇数位, 第二个则是偶数位, etc )
例如: 给定链表节点顺序关系为: 1->2->3->4->5->NULL, 则输出的应是: 1->3->5->2->4->NULL ;
解题过程:
(1) 题目意思明显, 显然是遍历进行处理 ;
(2) 考虑到链表的 "顺序" 只是逻辑上的, 且其空间占用全由链表中的节点承担, 所以可以直接用 两个子链表 分别收纳原链表中的 奇数位的节点 和 偶数位的节点, 然后分别收集链接各自所属的节点, 最后首尾相连即可 ;
(*) 容易坑的点是, 因为原链表中的节点数可能为奇数(即原先由奇数位节点结束), 所以还要显式地将 偶数位节点组成的子链表的末端 链接至 nullptr 之类的东西 以确保处理后的链表中的最后一个节点(也即原先的最后一个偶数位节点) 已经成为链表的最后一个节点 ;
代码如下:
class Solution {public: ListNode* oddEvenList(ListNode* head) { auto headOdd = head; auto lastOdd = headOdd; if (headOdd == nullptr) { return headOdd; } auto headEven = head->next; auto lastEven = headEven; if (headEven == nullptr) { return headOdd; } auto thisEven = lastEven; while (thisEven != nullptr) { auto nextOdd = thisEven->next; if (nextOdd == nullptr) { break; } lastOdd->next = nextOdd; lastOdd = lastOdd->next; auto nextEven = nextOdd->next; if (nextEven == nullptr) { break; } lastEven->next = nextEven; lastEven = lastEven->next; thisEven = nextEven; } lastOdd->next = headEven; lastEven->next = nullptr; return headOdd; }};
Runtime: 16 ms
阅读全文
0 0
- [算法分析与设计] leetcode 每周一题: 328. Odd Even Linked List
- leetcode 每日一题 328. Odd Even Linked List
- 328. Odd Even Linked List leetcode(list)
- LeetCode—328. Odd Even Linked List
- LeetCode 328. Odd Even Linked List Java
- Leetcode 328. Odd Even Linked List
- <LeetCode><Easy> 328. Odd Even Linked List
- [leetcode] - 328. Odd Even Linked List
- <LeetCode OJ> 328. Odd Even Linked List
- 328. Odd Even Linked List LeetCode
- leetCode 328. Odd Even Linked List
- Leetcode: 328. Odd Even Linked List(JAVA)
- LeetCode--328. Odd Even Linked List
- LeetCode 328. Odd Even Linked List
- LeetCode 328. Odd Even Linked List
- [LeetCode]328. Odd Even Linked List
- 【LeetCode】328. Odd Even Linked List
- LeetCode 328. Odd Even Linked List
- #BZOJ2054#疯狂的馒头(并查集经典)
- 单例模式
- windows环境下TensorFlow-gpu版本的安装
- Python中单线程、多线程和多进程的效率对比实验
- scp命令 远程服务器拷贝文件命令
- [算法分析与设计] leetcode 每周一题: 328. Odd Even Linked List
- Django 权限认证 编写 -- 根据不同的用户,设置不同的显示和访问权限
- 11.02
- 返回网页顶部
- 关于ionic2 app 接入支付宝支付出现ALI40247(系统繁忙,请稍后再试)
- ZOJ 3985 String of CCPC 2017秦皇岛CCPC(子串个数)
- jdk8的遍历list,list转map
- Eclipse =>Debug Configuration =>Environment有没有配置文件可修改
- 目标跟踪开发环境安装