java数据结构与算法刷题-----LeetCode328. 奇偶链表

Java实现 LeetCode 328 奇偶链表 328. 奇偶链表 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 示例 1: 输入: 1->2->3->4->5->NULL 输出: 1->3->... 阅读详情
java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.youkuaiyun.com/grd_java/article/details/123063846

在这里插入图片描述

解题思路

将链表按奇偶顺序,分成两个链表。最后将偶数链表放在奇数链表后面,下图中,even表示偶数下标,odd表示奇数下标,evenhead表示奇数链表的头结点
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码:时间复杂度O(n) 空间复杂度O(1):因为上面图解中的代码量少,但是比较难以理解,所以我会给出两个版本的代码,第一个代码量少,第二个更容易理解,但是两种版本效率是完全一样的。
  1. 代码量少的
    在这里插入图片描述
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode oddEvenList(ListNode head) {
        if(head == null || head.next == null) return head;
        ListNode odd = head;//指向奇数下标的头结点,并充当遍历结点
        ListNode evenHead = head.next; //指向偶数下标的头结点
        ListNode even = headB;//even表示偶数结点
        while(even!=null&&even.next!=null){//如果有结点可以遍历
            odd.next = even.next;//even指向偶数结点,那么它的下一个必然是奇数结点。放入奇数链表
            odd = odd.next;//奇数链表指针odd后移,那么odd的下一个就是偶数结点了
            even.next = odd.next;//让odd后面这个偶数结点,加入到偶数链even中
            even = even.next;//even后移,再次到偶数结点
        }
        odd.next = evenHead;//将偶数头结点,放到奇数链表末尾
        return head;//返回重新排列的链表
    }
}
  1. 代码量大的,但更容易理解。
    在这里插入图片描述
class Solution {
    public ListNode oddEvenList(ListNode head) {
        if(head == null || head.next == null) return head;
        ListNode headA = head;//headA表示奇数链表头结点
        ListNode headB = head.next; //headB表示偶数链表头结点
        ListNode current = headB.next;//current表示下一个该遍历的结点
        ListNode currentA = headA,currentB = headB;//currentA和currentB是奇偶两个链表的遍历指针
        boolean flag = true;//flag = true表示当前结点应该插入到奇数链表
        while(current!=null){//如果有结点可遍历
            currentA.next = null;currentB.next = null;//防止环的存在
            if(flag==true){//放headA中,表示奇数下标
                currentA.next = current;//插入到奇数链表尾部
                currentA = currentA.next;//奇数链表指针后移
                flag = false;//下一次插入偶数链表
            }else{
                currentB.next = current;
                currentB = currentB.next;
                flag = true;
            }
            current = current.next;//原链表指针后移
        }
        currentA.next = headB;//最后将偶数链表插入到奇数链表后面
        return headA;//返回新链表
    }
}
Excel数字变成了小数点+E+17?这些方法帮你解决! 本文介绍了三种解决Excel中数字变成小数点+E+17问题的方法:通过下拉箭头或右键菜单设置单元格格式为文本、使用TEXT函数将科学计数法转换为文本。这些方法各有优缺点,适用于不同的场景和需求。在实际应用中,我们可以根据具体情况选择合适的方法来解决问题。通过以上方法,我们可以轻松地从繁琐的小数点+E+17问题中解脱出来,更便捷地处理Excel中的数字。希望本文能够帮助到您,让您在使用Excel时更加得心应手! 阅读详情

相关推荐

深度学习二分类实战:用Python+Keras搞定基因表达数据预测(附完整代码)

本文详细介绍了如何使用Python和Keras构建深度学习模型进行基因表达数据的二分类预测。通过数据预处理、特征选择、神经网络构建及优化策略,特别针对小样本场景提供了调参技巧和模型解释方法。文章还包含完整的代码示例,帮助读者快速掌握深度学习在生物信息学中的应用。

weixin_30642561的博客 246

LeetCode Java面试刷题笔记汇总

LeetCode Java刷题笔记汇总,按照类型刷题效率更高。

终生学习践行者 2948

BPMN-JS :修改节点“Change Type”事件类型

修改路径:node_modules\bpmn-js\lib\features\replace\ReplaceOptions.js。

TaylorY的博客 680

【数据结构和算法】奇偶链表

这是力扣的 328 题,难度为中等,解题方案有很多种,本文讲解我认为最奇妙的一种。给定单链表的头节点head,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。 第一个节点的索引被认为是奇数,第二个节点的索引为偶数,以此类推。 请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。 你必须在O(1)的额外空间复杂度和O(n)的时间复杂度下解决这个问题。

船到桥头自然直 2070

Silvaco TCAD仿真4——DeckBuild实战:从示例库到自定义设计

本文详细介绍了Silvaco TCAD仿真工具DeckBuild的实战应用,从示例库的使用到自定义设计的全过程。通过具体案例和参数修改技巧,帮助用户快速掌握TCAD仿真技术,提升半导体器件设计的效率和精度。特别适合需要从基础入门到进阶操作的工程师和研究人员。

weixin_29284657的博客 435

实战指南:在UE5中高效集成Entt(ECS)框架

本文提供了一份在虚幻引擎5中高效集成Entt ECS框架的实战指南。针对UE5项目在处理大规模动态实体时的性能瓶颈,详细讲解了如何通过数据驱动的ECS架构进行优化。内容包括前期环境准备、核心构建步骤、创建首个ECS子系统以及与UE原生系统的数据同步技巧,旨在帮助开发者快速掌握集成方法,提升游戏逻辑的执行效率。

weixin_29002209的博客 158

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

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

ylumwd的博客 785

VSAN闪存缓存磁盘故障处理指南-RAID0模式实战解析

本文详细解析了VSAN集群中RAID0模式下的闪存缓存磁盘故障处理全流程。通过模拟真实故障场景,从告警识别、数据重建策略到磁盘组重构,提供了手把手的实战操作指南,并深入探讨了RAID0缓存故障的独特影响与风险,为运维人员应对此类高性能存储架构的突发问题提供了专业解决方案。

assembly8low的博客 446

LeetCode题练习与总结:奇偶链表--328

本文详细介绍了如何通过创建哑节点和使用指针技巧,在O(1)空间复杂度和O(n)时间复杂度下,将链表中的奇偶节点分别组合,实现链表重新排序的方法。

一直学习永不止步 1101

iTerm2+oh-my-zsh最全配置

iTerm2+oh-my-zsh最全配置安装前先看效果图一.安装[iTem2](https://iterm2.com/)二.安装[oh-my-zsh](https://ohmyz.sh/)三.安装[Powerline](https://powerline.readthedocs.io/en/latest/installation.html)四.安装 [Meslo](https://github.com/powerline/fonts) 字体库五.安装agnoster主题六.安装语法高亮七.安装代码补全插件八

xinximo的博客 2611

40分钟快速入门Dart基础(上)

针对final 和const 理解的有点模糊的可以参考这篇文章: 可以参考这里Flutter 知识梳理(Dart)-Dart中static final const 区别看是不是超级好上手,好操作~其实Dart的整个学习起来还是蛮简单的,对于有基础的老司机更简单一些。分分钟敲起来~这篇文章就简单的介绍到这里如何短时间快速入门Dart,避免入坑。由于是想让大家快速入门Flutter,所以针对上面的这些章节我们讲解的只是一些在开发Flutter 过程中常用的一些方法和函数。

qq_7813180 4572

LeetCode 328. 奇偶链表 java解法

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

m0_47650399的博客 276

别再只看K线了!用Python自制筹码分布图,可视化Winner函数帮你判断支撑压力

本文详细介绍了如何用Python自制筹码分布图,通过数据清洗、算法实现和动态可视化,帮助投资者更准确地判断股票支撑压力位。文章重点讲解了Winner函数的应用,结合筹码分布与交易策略,提升交易决策的精准度。

weixin_42520796的博客 316

LeetCode328. 奇偶链表(java)

题目: 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 示例: 代码: 解法一 /** * Definition for singly-linked list. * public...

inferno_devil的博客 309

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【LeetCode每日一题】[中等]328. 奇偶链表

【LeetCode每日一题】[中等]328. 奇偶链表 328. 奇偶链表 328. 奇偶链表 算法思想:链表 题目: 思路: 思路link 分离奇数偶数链表,然后合并奇偶链表 java代码 class Solution { public ListNode oddEvenList(ListNode head) { if (head == null) {//如果是空,直接返回 return head; } ListNode evenHead = head.next;//偶数节点头结点

qq_39457586的博客 185

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

[LeetCode] 328. 奇偶链表(java实现)

[LeetCode]725. 分隔链表(java实现)1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 要求算法空间复杂度O(1)—不能使用额外的空间 要求时间复杂度为O(n) 思路:新建奇偶指针、遍历修改next指针、遍历完后将奇偶链表相连 3. 解法 /** * Definition for singly-linked list. * public class ListNode {

cloud的博客 363

精雕软件(JDpaint) 5.5 绿色版

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

leetcode刷题记录

刷题过程记录

洪肥肥的博客 2063

leetcode刷题,总结,记录,备忘 328

leetcode328Odd 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

guicaisa的博客 1603

Leetcode328. 奇偶链表

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

会流泪de鱼的博客 209
上一篇: java数据结构与算法刷题-----LeetCode725. 分隔链表
下一篇: java数据结构与算法刷题-----LeetCode242. 有效的字母异位词
ydenergy_殷志鹏
博客等级 码龄7年 5887粉丝 543原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值