算法题—leetcode328:奇偶链表

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 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-& 阅读详情

题目链接

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

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

应当保持奇数节点和偶数节点的相对顺序。
链表的第一个节点视为奇数节点,第二个节点视为偶数节点,以此类推。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/odd-even-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路分析
1、题目要求时间复杂度是O(n),空间复杂度是O(1),说明只让我们遍历一遍链表
2、可以设置两个指针p和q,分别指向奇数节点的开始位置和偶数节点开始的位置
3、可以发现奇数节点的下一个节点是偶数节点的下一个节点
4、偶数节点的下一个节点是奇数节点的下一个节点
5、就像麻花一样
通过代码
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode oddEvenList(ListNode head) {
        if ((head==null)||(head.next==null)) return head;
        ListNode p =head;
        ListNode q=head.next;
        ListNode x=q;
        for(;;){
            if (q.next!=null){
                p.next=q.next;
                p=p.next;
            }else break;
            if (p.next!=null){
                q.next=p.next;
                q=q.next;
            }else{
                q.next=null;
                break;
            }
        }
        p.next=x;
        return head;
    }
}
[leetcode] 328.奇偶链表 +86.分隔链表 + 143.重排链表 lc86. 思路是:先拆分,再拼接 具体操作:采用双指针p1,p2,不重新创建每个结点,而是改变结点的指向,归属于子链表1或者子链表2 遍历链表,依次判断结点大小,然后操作p1.next 或者 p2.next 因为可能需要操作头节点(头节点可能大于x),现有头结点具有不确定性,因此创建新的结点作头节点 子链表1和子链表2都需要创建头节点 before_head, after_head,并分别初始化 p1 和 p2 时间复杂度:O(n),遍历一次链表 空间复杂度:O(1),我们没有使用任何额外的空间,只.. 阅读详情

相关推荐

从12摄像头到纯视觉:小鹏AI鹰眼方案如何用LOFIC技术省掉激光雷达?

本文深入解析小鹏汽车AI鹰眼方案如何通过LOFIC技术实现纯视觉自动驾驶,替代传统激光雷达。LOFIC摄像头在动态范围、噪声控制和HDR优化方面表现卓越,结合800万像素双目广角摄像头,达到激光雷达级测距精度。该方案不仅降低成本,还提升系统可靠性和用户体验,展示了纯视觉路线的技术潜力与边界。

t8u9v0w1x的博客 933

LeetCode 328. 奇偶链表

题目:奇偶链表 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 示例 1: 输入: 1->2->3->4->5->NULL 输出: 1->3-&...

qq_43624033的博客 294

亚博k210视觉模块与stm32双向通信

【代码】亚博k210视觉模块与stm32双向通信。

w_150831的博客 3245

Leetcode 每日一题——328. 奇偶链表

328. 奇偶链表 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 链表操作还是相对简单的,就是插入、删除以及交换节点这些操作的组合,用双指针思路实现的代码如下(Python版): # Definition for singly-linked list. # class ListNode: #

qq_41978896的博客 279

开源低场MRI系统构建:从原理到三天实现

磁共振成像(MRI)作为现代医学影像的核心技术,其高场强系统存在成本和技术门槛问题。低场MRI通过开源硬件和模块化设计实现技术民主化,采用永磁体替代超导磁体可大幅降低系统复杂度。本文以H型永磁体设计为例,结合MaRCoS开源控制库和PyPulseq脉冲序列工具,展示了如何快速构建教育级MRI系统。关键技术包括遗传算法优化的匀场方案、CNC加工的梯度线圈,以及基于Red Pitaya的SDR控制架构。这种轻量化方案特别适合医学物理教学和脉冲序列开发验证,为MRI技术在资源有限地区的普及提供了新思路。

weixin_30470643的博客 449

深入解析Vivado FIFO的Standard与FWFT模式:性能对比与应用场景

本文深入解析了Vivado FIFO的Standard与FWFT两种工作模式的核心差异。通过对比数据就绪时机、读延迟、控制逻辑和有效深度等关键特性,并结合图像处理、数据包转发等典型应用场景,为FPGA设计者提供了清晰的选择依据和实战配置指南,帮助优化数据流性能与设计效率。

weixin_29219189的博客 254

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。 请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。如下实例。示例 :输入: 1->2->3->4-

【代码】给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。如下实例。示例 :输入: 1->2->3->4-

thq_kuqi的博客 1334

K-L展开 (Karhunen-Loeve expansion)

K-L变换

susan_wang1的博客 2万+

给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。

力扣原题: 先贴代码: public class Solution328 { public ListNode oddEvenList(ListNode head) { //当链表为空时,直接返回 if (head == null){ return head; } //创建节点oddnum和节点evennum,始终指向奇数和偶数的最后一个节点 ListNode oddnum = head.

小型骷髅的博客 1959

告别卡顿闪烁!在Cesium 1.134中集成SOG格式,让400万高斯秒级加载

本文详细介绍了如何在Cesium 1.134中集成SOG格式,实现400万高斯数据的秒级加载,解决传统加载方式导致的卡顿和闪烁问题。通过空间索引重构、属性量化编码和WebGPU原生支持等技术,SOG格式显著提升了三维地理空间可视化的性能。文章还提供了环境准备、模型转换和Cesium集成的实战指南,帮助开发者高效优化项目。

weixin_29313817的博客 498

YOLOv11改进 | 上采样篇 | YOLOv11引入DySample轻量级动态上采样器

虽然最近的基于内核的动态上采样器(如CARAFE、FADE和SAPA)的性能提升令人印象深刻,但它们引入了大量工作负载,主要是由于耗时的动态卷积和用于生成动态内核的额外子网。DySample模块的设计旨在解决现有动态上采样器的高计算开销和复杂性问题,同时提供更好的性能和效率。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

tsg6698的博客 3125

【中等】力扣算法题解析LeetCode328:奇偶链表

LeetCode328要求将单链表的奇数位和偶数位节点分组后重新连接。解法使用双指针(odd和even)分离奇偶节点:odd遍历奇数索引节点,even遍历偶数索引节点,并记录偶数头节点evenHead。通过循环更新指针的next指向,最后将奇数链尾节点连接evenHead。时间复杂度O(n),空间复杂度O(1)。 示例: 输入[1,2,3,4,5]输出[1,3,5,2,4]。代码通过原地修改指针实现,保持节点相对顺序。 核心点:边界处理、双指针分离、合并链表。

ylumwd的博客 784

从零构建Fama-French多因子模型:量化投资系统开发实战

本文详细介绍了如何从零构建Fama-French多因子模型,并将其应用于量化投资系统的开发。首先,文章概述了Fama-French多因子模型的背景、核心原理和架构,解释了其如何通过引入市场风险、规模、价值、盈利和投资等因子来解释股票收益率的变化。接着,文章详细阐述了构建该模型的具体步骤,包括因子的计算、因子暴露的确定以及模型的估计。通过数学模型和公式,文章对模型进行了理论推导,并举例说明了其应用。此外,文章还提供了项目实战的代码案例,从开发环境搭建到源代码实现,逐步指导读者完成量化投资系统的开发。最后,文章

2501_92132293的博客 1224

数据结构之线性表——LeetCode:328. 奇偶链表,86. 分隔链表,24. 两两交换链表中的节点

它通过遍历链表,将奇数索引的节点组成一个链表,偶数索引的节点组成另一个链表,最后将偶数链表连接到奇数链表的末尾。它采用递归的方式,从链表的头部开始,每次交换两个相邻节点,并继续递归处理剩余的链表部分。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。的节点之前,同时保持两个分区中每个节点的初始相对位置。给你一个链表的头节点。

u014114223的博客 1170

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LeetCode Hot 热题100 算法题 328.奇偶链表-算法&测试-medium模式

LeetCode Hot 热题100 算法题 328.奇偶链表-算法&测试-medium模式 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起,保持奇数节点和偶数节点的相对顺序。 注意:奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点值的奇偶性; 第一个节点视为奇数节点。 输入:1->2->3->4->5->null 输出:1->3->5->2->4->null 请尝试使用原地算法完成,空间复杂度O(1),时间复杂度O(n)。 p

weixin_48017483的博客 247

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

LeetCode题解:328.奇偶链表

奇偶链表 一、LeetCode题解 瞧一瞧~ 博健的LeetCode题解:Gitbook版本传送门 博健的LeetCode题解:优快云传送门 前端进阶笔记:Gitbook传送门 二、算法题 题目 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),...

余光的博客 1631

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

力扣-328 奇偶链表

关键是3,因为此处为单链表,无法直接找到q前一个结点(虽然可通过count/2的值来计算next数量,但过于复杂),此处直接定义一个temp节点,每次q指向奇数节点时,既让temp指向后面的偶数节点,故下一次循环中,temp即为q的前一个节点。应在最前面,这就要求在第一次循环开始前就要先定义temp,此处令p指向head,q指向head->next,count=2,temp=q,则开始循环后q = q->next;,temp即指向奇数节点q的前一个偶数节点。3. 让q的前一个结点指向q->next。

swzs666的博客 275

【数据结构与算法 | 灵神题单 | 双指针(链表)篇】力扣86, 328

双队列思路,需要多次遍历链表,一个队列存放小于x的值,另一个队列存放大于等于x的值。,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。一步一步理清怎么将奇数节点插入到最新插入的奇数节点的后面。两个分区中每个节点的初始相对位置。,请你对链表进行分隔,使得所有。时间复杂度和空间复杂度都很高。的时间复杂度下解决这个问题。给你一个链表的头节点。

2301_80912559的博客 589

​LeetCode刷题实战328:奇偶链表

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !...

程序IT圈 138

4.21算法题

我们的目的是找到中间节点,得到两个链表,并且反转后半链表,再进行依次的插入。中间节点的查找我们可以想到快慢指针,快指针一次走两步,慢指针一次走一步,那么快指针走到链表结尾时,慢指针刚好在中间节点处。反转结束后,将前半链表和后半链表进行依次的插入,就得到了题目要求的新链表。我们没办法单独列出其中任何一个链表,因为偶链表节点的查找需要借助它的上一个节点,也就是奇链表节点,所以我们没办法单独列出其中任何一个链表,只能一起列。,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。

2401_89605914的博客 723

C++链表基本用法及LeetCode经典链表题目汇总

链表基本用法: 目录 链表基本用法: C++链表及基本操作 LeetCode链表经典题目汇总: 2. 两数相加 19. 删除链表的倒数第 N 个结点 21. 合并两个有序链表 23. 合并K个升序链表 24. 两两交换链表中的节点 25. K 个一组翻转链表 61. 旋转链表 92. 反转链表 II 141. 环形链表 142. 环形链表 II 160. 相交链表 328. 奇偶链表 C++链表及基本操作 1 2 ...

whocare的博客 4147

328. Odd Even Linked List**

328. Odd Even Linked List** 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. Y...

珍妮的选择的博客 250

LeetCode - 725. 分隔链表

725. 分隔链表 给定一个头结点为 root 的链表, 编写一个函数以将链表分隔为 k 个连续的部分。 每部分的长度应该尽可能的相等: 任意两部分的长度差距不能超过 1,也就是说可能有些部分为 null。 这k个部分应该按照在链表中出现的顺序进行输出,并且排在前面的部分的长度应该大于或等于后面的长度。 返回一个符合上述规则的链表的列表。 举例: 1->2->3->4, k = ...

virgilshi的博客 301

Leetcode记录库数据结构篇之一:链表

Leetcode记录库

NotLency的博客 383

面试必备 LeetCode 链表算法题汇总

引言:   搜集题目的难度是在简单级别和中级级别,也是面试常考的题目。题目的题解,使用的开发语言是Swift。   因为题目的描述很长,以及有各种案例提示,为了不占篇幅,所以没有展示出来,大家可以直接通过题号查询去查看题目的描述。   文章的写作顺序是: 1. 展示题号和以及题目的链接 2. 核心思想的讲述 3. 代码实现。 最后本文提供的代码都是在LeetCode上提交通过的。 1. Linked List Question...

Python+大数据+数据分析+自动化+Vue组件开发 361

leetcode刷题(java语言实现)

leetcodeleetcode 第326题 : 3的幂leetcode 第326题 : 3的幂 leetcode 第326题 : 3的幂 给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。 整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == x3 原题链接 java代码实现 class Solution { public boolean isPowerOfThree(int n) { int sum=1;

weixin_41472455的博客 764
上一篇: 编程题—矩阵中的路径
下一篇: 编程题—leetcode54:二叉搜索树的第k大节点
code_AC
博客等级 码龄12年 255粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值