博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2019-10-28 奇偶链表
阅读量:2073 次
发布时间:2019-04-29

本文共 1246 字,大约阅读时间需要 4 分钟。

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

请尝试使用原地算法完成。你的算法的空间复杂度应为 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
说明:

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

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

C++1
/** * 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 || !head->next){
return head; } ListNode * odd = new ListNode(0); ListNode * odd2 = new ListNode(0); ListNode * even = new ListNode(0); ListNode * h = head; int i=0; while(h){
if(i%2==0){
even->next = h; even = even->next; }else if(i == 1){
odd2->next = h; odd->next = h; odd = odd->next; }else{
odd->next = h; odd = odd->next; } h = h->next; i++; } odd->next = NULL; even->next = odd2->next; return head; }};

转载地址:http://olomf.baihongyu.com/

你可能感兴趣的文章
软考 英语学习
查看>>
maven 文件上传到远程服务器目录
查看>>
shell 脚本免密远程访问
查看>>
Linux平台Oracle多个实例启动说明
查看>>
在LINUX平台上手动创建数据库(oracle 10g)(在一个oracle服务器上启动两个实例)
查看>>
Oracle 10g 下载地址
查看>>
Linux 下 新增Oracle10g 实例
查看>>
LRM-00123 ORA-01078
查看>>
ORA-01102: cannot mount database in EXCLUSIVE mode
查看>>
专栏结语
查看>>
BERT 实战
查看>>
BERT 基础
查看>>
什么是 Transformer
查看>>
简述 XLNet 的原理和应用
查看>>
实战:为图片生成文本摘要
查看>>
论文复现:用 CNN 进行文本分类
查看>>
多复杂的 CNN 都离不开的这几个基本结构
查看>>
实践:动手搭建神经机器翻译模型
查看>>
透彻理解神经机器翻译的原理
查看>>
实践:动手搭建聊天机器人
查看>>