首页 > 试题广场 >

链表的奇偶重排

[编程题]链表的奇偶重排
  • 热度指数:101459 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。
注意是节点的编号而非节点的数值。

数据范围:节点数量满足 ,节点中的值都满足
要求:空间复杂度 ,时间复杂度
示例1

输入

{1,2,3,4,5,6}

输出

{1,3,5,2,4,6}

说明

1->2->3->4->5->6->NULL
重排后为
1->3->5->2->4->6->NULL
示例2

输入

{1,4,6,3,7}

输出

{1,6,7,4,3}

说明

1->4->6->3->7->NULL
重排后为
1->6->7->4->3->NULL
奇数位节点有1,6,7,偶数位节点有4,3。重排后为1,6,7,4,3

备注:
链表长度不大于200000。每个数范围均在int内。

说明:本题目包含复杂数据结构ListNode,点此查看相关信息
头像 牛客题解官
发表于 2022-04-22 11:35:10
精华题解 题目主要信息: 给定一个链表,将奇数位的节点依次连在前半部分,偶数位的节点依次连在后半部分 返回连接后的链表头 举一反三: 学习完本题的思路你可以解决如下题目: BM4.合并有序链表 BM5.合并k个已排序的链表 BM6.判断链表中是否有环 BM7.链表中环的入口节点 BM8.链表中倒数最后k个 展开全文
头像 LifelongCode
发表于 2021-01-07 12:20:37
转载:作者:LeetCode-Solution链接:https://leetcode-cn.com/problems/odd-even-linked-list/solution/qi-ou-lian-biao-by-leetcode-solution/来源:力扣(LeetCode) 方法一:分离节 展开全文
头像 天上掉下来SCI
发表于 2022-04-07 21:00:28
不敢相信这么顺利,大概就写了一会儿,,,我现在对于这种题已经这么熟练了吗?真开心哈哈哈哈哈。 * struct ListNode { * int val; * struct ListNode *next; * }; * * C语言声明定义全局变量请加上static,防止重复定义 */ 展开全文
头像 摸鱼学大师
发表于 2022-02-24 20:24:20
题目主要信息: 给定一个链表,将奇数位的节点依次连在前半部分,偶数位的节点依次连在后半部分 返回连接后的链表头 具体思路: 如下图所示,第一个节点是奇数位,第二个节点是偶数,第二个节点后又是奇数位,因此可以断掉节点1和节点2之间的连接,指向节点2的后面即节点3,如红色箭头。如果此时我们将第一个节 展开全文
头像 牛客516598323号
发表于 2020-09-22 21:50:59
一样,链表题需要投机取巧,使用数组加快运算。第一遍遍历链表分拣出奇偶结点的值,然后第二遍遍历把重新排序好的值送回去就行。用例通过率: 100.00% 运行时间: 963ms 占用内存: 40996KB。 # class ListNode: # def __init__(self, x): # 展开全文
头像 自由的走狗
发表于 2020-12-25 20:39:12
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * } */ public class Solution { /** * 代码中的类名、方法 展开全文
头像 牛客787721252号
发表于 2021-10-01 12:06:18
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * 展开全文
头像 牛客566659818号
发表于 2022-08-10 10:35:11
本题用了四个变量,作用分别是n1,n2寻找奇数下标和偶数下标;h1,h2分别是奇数的头结点和偶数头结点,最后将n1的next指向h2,将两数相连即可。 struct ListNode* oddEvenList(struct ListNode* head ) {     // wr 展开全文
头像 棒棒糖🍭201906101800876
发表于 2021-10-12 14:35:49
NC133 链表的奇偶重排 题目描述 给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。 注意是节点的编号而非节点的数值。 1. 使用2个队列 使用两个队列分别记录下链表的奇数节点,偶数节点,再遍历链表,依次出队列装回去,只改变value即可。 /** * 展开全文
头像 小洋芋热爱NLP
发表于 2021-01-26 15:27:42
- 1、题目描述: - 2、题目链接: https://www.nowcoder.com/practice/02bf49ea45cd486daa031614f9bd6fc3?tpId=117&&tqId=35488&rp=1&ru=/ta/job-code-high& 展开全文
头像 JaXing🐖
发表于 2022-03-12 22:32:50
使用了双指针 设置first指针和last分别位于前后相邻的位置,一次向后遍历里两步,则得到的frst过的为偶数位,last奇数位 同时考虑null指针的情况 import java.util.*; /* * public class ListNode { * int val; * 展开全文