【一天一道LeetCode】#328 Odd Even Linked List
一天一道LeetCode系列
(一)题目
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 …Credits: Special thanks to @DjangoUnchained for adding this problem
and creating all test cases.Subscribe to see which companies asked this question
题目的意思大概是:根据数字编号,将奇数编号排在偶数编号之前,不能改变奇数编号和偶数编号原有的内部顺序。
思路:可以建立两个链表,奇数编号链表和偶数编号链表,遍历原链表,进行判断分类即可。
(二)代码实现
/**
* 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 == NULL) return head; //原链表为空,即返回
if(head->next == NULL) return head;//原链表只有两位,即返回
ListNode* oddtail = head; //奇数编号链表尾
ListNode* even = head->next; //偶数编号链表开始位
ListNode* eventail = head->next;//偶数编号链表尾
ListNode* p = head->next->next;
int i;
while(p){
if((i & 0x1) == 1)//判断编号为奇数
{
oddtail->next = p;
oddtail = oddtail->next;
}
else {
eventail->next = p;
eventail=eventail->next;
}
p=p->next;
i++;
}
eventail-> next = NULL; //链表尾置空
oddtail->next = even;//将两个链表尾首相连,得到结果
return head;
}
};
【一天一道LeetCode】#328 Odd Even Linked List的更多相关文章
- [LeetCode] 328. Odd Even Linked List ☆☆☆(奇偶节点分别放一起)
每天一算:Odd Even Linked List 描述 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起.请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性. 请尝 ...
- 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 1->2->3->4->5->NULL, return 1->3->5->2->4->NULL. 就是将序号为单数的放在前面,而 ...
- <LeetCode OJ> 328. Odd Even Linked List
328. Odd Even Linked List Total Accepted: 9271 Total Submissions: 24497 Difficulty: Easy Given a sin ...
- 【一天一道Leetcode】#203.Remove Linked List Elements
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 我的个人博客已创建,欢迎大家持续关注! 一天一道le ...
- 【一天一道LeetCode】#206. Reverse Linked List
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Reverse ...
随机推荐
- JSP简单隔行变色和日期格式化
以前好像在找,都没找到简单点的,所以后面就自己写了一个,感觉超级简单又好理解,分享给大家 <%@ page language="java" import="java ...
- make、make clean、make install、make uninstall、make dist、make distcheck和make distclean
Makefile在符合GNU Makefiel惯例的Makefile中,包含了一些基本的预先定义的操作:make根据Makefile编译源代码,连接,生成目标文件,可执行文件.make clean清除 ...
- ORACLE数据库学习之SQL性能优化详解
Oracle sql 性能优化调整 ...
- storm消费kafka实现实时计算
大致架构 * 每个应用实例部署一个日志agent * agent实时将日志发送到kafka * storm实时计算日志 * storm计算结果保存到hbase storm消费kafka 创建实时计算项 ...
- Eclipse中如何快速查看jar包中 的class源码
我们查看jar源码时,一般是安装个jd-gui,把jar拷出来,然后从jd-gui中打开jar再查看源码,这个过程不免有些麻烦,当然,本篇所讲的快速查看的方法也没什么高科技手段,只是将jd-gui集成 ...
- Hessian源码分析--HessianProxy
在上一篇博客 Hessian源码分析--HessianProxyFactory 中我们了解到,客户端获得的对象其实是HessianProxy生成的目标对象,当调用目标对象的方法时,会调用Hessian ...
- Inventory Transactions Manager
Overview Inventory Transaction Manager用于处理库存接口表(MTL_TRANSACTION_INTERFACE或者MTL_MATERIAL_TRANSACTIONS ...
- C语言实现4种常用排序
实在没事搞,反正面试也要用到,继续来写4种排序算法.因为那天用java写了排序,突然想到我是要面试IOS,起码也得用C写.C竟然忘干净了,方法都不会写了.囧啊! 下面用C实现4种排序算法:快速排序.冒 ...
- 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)
: 12MHz 晶振 对应 405 ~ 532 MHz 处理速度; -- : 16K 指令缓存, 16K 数据缓存; -- : 32KB 指令缓存, 32KB 数据缓存; (3) 内存接口对比 : 提 ...
- Mybatis源码分析之结果封装ResultSetHandler和DefaultResultSetHandler
ResultSetHandler负责处理两件事: (1)处理Statement执行后产生的结果集,生成结果列表 (2)处理存储过程执行后的输出参数ResultSetHandler是一个接口,提供了两个 ...