博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode 328 奇偶链表
阅读量:6238 次
发布时间:2019-06-22

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

 

更新代码:

开头检测是否需要调整(是否具有第三个节点)

使用三个ListNode* 变量记录奇偶链表的头尾headA,tailA为奇链表,headB为偶数链表,由于只需要最后令tailA->next=headB因此不需要tailB。

使用两个ListNode* 变量来进行遍历,cur记录当前链表节点指针,nxt记录下一个链表节点指针。

使用一个int 变量记录是否为奇数节点,如果是则更新tailA。

time O(n),space O(1)

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; *//**定义四个变量:headA,headB记录第一个和第二个节点,tailA记录奇数节点的尾部,cur为当前遍历节点,next为下一个节点**/class Solution {public:    ListNode* oddEvenList(ListNode* head) {        if(head==NULL||head->next==NULL||head->next->next==NULL) return head;        ListNode* headA=head,*headB=head->next;        ListNode* tailA,*cur=head,*nxt=head->next;        int flag=0;        while(nxt){            cur->next=nxt->next;            cur=nxt,nxt=nxt->next;            if(flag) tailA=cur;            flag=(flag+1)%2;        }        cur->next=NULL;// if(flag) cur->next=NULL;应该也可以        tailA->next=headB;        return headA;    }};

 效果不错

 

 


 

C++代码:定义三个指针变量,cur,nex,head2,思路就是将链表分开为奇偶两部分,cur,和nex分别指向当前节点和下一个节点,当nex的下一个节点为NULL 终止循环,head指向第二个节点(如果有的话);

时间复杂度O(nodes);

 

1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode* oddEvenList(ListNode* head) {12         if(head==NULL||head->next==NULL) return head;13         ListNode* cur;14         ListNode* nex;15         ListNode* head2;16         cur=head;nex=head->next;head2=nex;17         int flag=1;18         while(nex->next!=NULL){19             cur->next=nex->next;20             cur=nex;nex=nex->next;21             flag=-flag;22         }23         cur->next=NULL;24         25         if(flag==1){26             cur->next=head2;27         }else{28             nex->next=head2;29         }30         return head;31     }32 };

 效果一般般:

 

转载于:https://www.cnblogs.com/joelwang/p/10446879.html

你可能感兴趣的文章
Java编码风格
查看>>
Spring MVC防御CSRF、XSS和SQL注入攻击
查看>>
gcc命令使用记录
查看>>
下载网络文件HttpURLConnection.getContentLength()大小为 -...
查看>>
linux文件设备与I/O:read/write函数 与 阻塞 Block
查看>>
在Tomcat中部署Web程序的几种方式
查看>>
javascript常用命令
查看>>
Cocos2d-X游戏开发(一):搭建Cocos2d-X开发环境
查看>>
Linux: devfs, devtmpfs and udev
查看>>
nginx 日志切割
查看>>
objective-c 数据类型和限定词对应关系
查看>>
Golang实现简单tcp服务器04 -- 服务器的粘包处理
查看>>
centos7 mysql8安装
查看>>
任务状态机
查看>>
cocos2dx 实现软渲染引擎 soft rendering engine
查看>>
移动H5前端性能优化指南
查看>>
报表制作工具中自定义函数概述
查看>>
Sqoop2从Mysql导入Hdfs (hadoop-2.7.1,Sqoop 1.99.6)
查看>>
浮点数指令
查看>>
无法删除文件名称过长的文件
查看>>