<LeetCode OJ> 328. Odd Even Linked List
328. Odd Even Linked List
Submissions: 24497 Difficulty: Easy
Given a singly linked list, group all odd nodes together followed by the even nodes.
Please note here we are talking about the node number and not the value in the nodes.
You should try to do it in place. The program should run in O(1) space complexity and O(nodes) time complexity.
Example:
Given 1->2->3->4->5->NULL,
return 1->3->5->2->4->NULL.
Note:
The relative order inside both the even and odd groups should remain as it was in the input.
The first node is considered odd, the second node even and so on ...
分析:
简单模拟思想。
申请两个指针,一个总是指向当前将要建立连接的奇数节点,一个偶数...最后联立奇数链表和偶数链表就可以。
显然,先建立奇数指针。再偶数指针....
建立奇数指针时,看偶数指针的下一个位置是否存在。存在就建立连接,
并将奇数指针移动当当前奇数节点!
假设不存在就完毕偶数链和奇数链的终于联立。
偶数指针同理。
class Solution {
public:
ListNode* oddEvenList(ListNode* head) {
if(!head || head->next==NULL || head->next->next==NULL)
return head;
ListNode* oddNode=head;//奇数
ListNode* evenNode=head->next;//偶数
ListNode* evenhead=head->next;//偶数头
while(true)
{
if(evenNode->next!=NULL)//假设存在就建立连接
{
oddNode->next=evenNode->next;
oddNode=evenNode->next;//偶数尾巴
}else
{
oddNode->next=evenhead;
evenNode->next=NULL;
break;//建立偶数链表与奇数链表的连接退出循环
}
if(oddNode->next!=NULL)
{
evenNode->next=oddNode->next;
evenNode=oddNode->next;
}else
{
oddNode->next=evenhead;
evenNode->next=NULL;
break;//建立......连接退出循环
}
}
return head;
}
};
简化代码:
class Solution {
public:
ListNode* oddEvenList(ListNode* head) {
if(!head || head->next==NULL || head->next->next==NULL)
return head;
ListNode* oddNode=head;//奇数
ListNode* evenNode=head->next;//偶数
ListNode* evenhead=head->next;//偶数头
while(evenNode!=NULL && evenNode->next !=NULL)//无论链表有奇数个还是偶数个节点都以偶数指针作为截止条件
{
oddNode->next=evenNode->next;
oddNode=evenNode->next;//偶数尾巴
evenNode->next=oddNode->next;
evenNode=oddNode->next;
}
oddNode->next=evenhead;
return head;
}
};
注:本博文为EbowTang原创,兴许可能继续更新本文。假设转载,请务必复制本条信息!
原文地址:http://blog.csdn.net/ebowtang/article/details/50611707
原作者博客:http://blog.csdn.net/ebowtang
本博客LeetCode题解索引:http://blog.csdn.net/ebowtang/article/details/50668895
<LeetCode OJ> 328. Odd Even Linked List的更多相关文章
- [LeetCode] 328. Odd Even Linked List ☆☆☆(奇偶节点分别放一起)
每天一算:Odd Even Linked List 描述 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起.请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性. 请尝 ...
- 【一天一道LeetCode】#328 Odd Even Linked List
一天一道LeetCode系列 (一)题目 Given a singly linked list, group all odd nodes together followed by the even n ...
- 【LeetCode】328. Odd Even Linked List 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- LeetCode 328. Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- Java [Leetcode 328]Odd Even Linked List
题目描述: Given a singly linked list, group all odd nodes together followed by the even nodes. Please no ...
- LeetCode 328. Odd Even Linked List C#
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- (链表) leetcode 328. Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- 【Leetcode】 328. Odd Even Linked List
Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...
- 【leetcode】328. Odd Even Linked List
题目如下: Given a singly linked list, group all odd nodes together followed by the even nodes. Please no ...
随机推荐
- Selenium2+python自动化28-table定位【转载】
前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table ...
- PEP 3106 -- Revamping(改进) dict.keys(), .values() and .items()
1. Abstract(摘要) This PEP proposes(建议) to change the .keys(), .values() and .items() methods of the b ...
- jQuery 特殊选择器this
特殊选择器this 相信很多刚接触jQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢? this是JavaScript中的关键字,指的是当前的上下文对象,简单的 ...
- 最近项目中用到的js
1.用字典判断数组是否有重复function ticketTypeValidate() { var ticketArr = []; var tickettype = $("div[name= ...
- RMQ问题心得
RMQ(Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j),返回数列A中下标i,j里的最小/大值,即RMQ问题是指求区间最值的问题 ...
- POJ 3026 --Borg Maze(bfs,最小生成树,英语题意题,卡格式)
Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16625 Accepted: 5383 Descri ...
- [BZOJ 1145] 图腾totem
Link:https://www.lydsy.com/JudgeOnline/problem.php?id=1145 Solution: 算是一道神题了吧 设 f(abcd)为:当选出的四个数相对大小 ...
- 【母函数】hdu2082 找单词
普通型母函数详解见这里:http://www.wutianqi.com/?p=596 裸题,存个板子. #include<cstdio> #include<cstring> u ...
- 【博弈论】【SG函数】poj2311 Cutting Game
由于异或运算满足结合律,我们把当前状态的SG函数定义为 它所能切割成的所有纸片对的两两异或和之外的最小非负整数. #include<cstdio> #include<set> ...
- 【函数式权值分块】【块状链表】bzoj3065 带插入区间K小值
显然是块状链表的经典题.但是经典做法的复杂度是O(n*sqrt(n)*log^2(n))的,出题人明确说了会卡掉. 于是我们考虑每个块内记录前n个块的权值分块. 查询的时候差分什么的,复杂度就是O(n ...