【Leetcode Top 100 - 扩展】328. 奇偶链表

问题背景

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

数据约束

n n n 表示链表中的节点数
0 ≤ n ≤ 1 0 4 0 \le n \le 10 ^ 4 0n104
− 1 0 6 ≤ N o d e . v a l ≤ 1 0 6 -10 ^ 6 \le Node.val \le 10 ^ 6 106Node.val106

解题过程

定义两个工作指针,修改链表中节点的指向把另一个链表分离出来即可。
可能会出现链表中只有一个节点的情况,循环的判断条件要小心。

注意数据范围,头节点可能为空,要单独处理。

具体实现

/*** 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) {return null;}ListNode cur = head, anoCur, anoHead = head.next;while(cur.next != null && cur.next.next != null) {anoCur = cur.next;cur.next = cur.next.next;anoCur.next = anoCur.next.next;cur = cur.next;}cur.next = anoHead;return head;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/61965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用伪装IP地址和MAC地址进行Nmap扫描

使用伪装IP地址和MAC地址进行Nmap扫描 在某些网络设置中,攻击者可以使用伪装的IP地址甚至伪装的MAC地址进行系统扫描。这种扫描方式只有在可以保证捕获响应的情况下才有意义。如果从某个随机的网络尝试使用伪装的IP地址进行扫描,很可能无法接收到任何响…

k8s 之 Role-Based Access Control

在 Kubernetes 中,RBAC(Role-Based Access Control)是一个用来控制对 Kubernetes 资源访问的授权机制。它通过定义不同角色(Role)和这些角色可以访问的权限,确保只有被授权的用户或服务能够执行特定的操作。…

什么是TCP的三次握手?

TCP的三次握手:深入理解建立可靠连接的过程 引言 在计算机网络中,传输控制协议(TCP)是确保数据可靠传输的核心协议之一。TCP通过三次握手机制来建立一个稳定的、双向的连接,这对于确保数据的完整性和顺序至关重要。本…

SpringBoot该怎么使用Neo4j - 优化篇

文章目录 前言实体工具使用 前言 上一篇中,我们的Cypher都用的是字符串,字符串拼接简单,但存在写错的风险,对于一些比较懒的开发者,甚至觉得之间写字符串还更自在快速,也确实,但如果在后期需要…

MySQL中on和where的区别

select name, bonus from Employee left join Bonus on Employee.EmpId Bonus.EmpId where bonus is null or bonus < 1000 作者&#xff1a;力扣官方题解 链接&#xff1a;https://leetcode.cn/problems/employee-bonus/ 来源&#xff1a;力扣&#xff08;LeetCode&#x…

数据科学与大数据之间的区别

什么是数据科学&#xff1f; 数据科学是一个跨学科领域&#xff0c;它将统计学和计算方法相结合&#xff0c;旨在从数据中提取见解和知识。它涉及收集、处理、分析以及解读数据&#xff0c;以揭示可用于为决策过程提供依据并推动创新的模式、趋势和关系。 数据科学涵盖了广泛…

neo4j如何存储关于liquidity structure的层次和关联结构

在 Neo4j 中存储关于流动性结构&#xff08;liquidity structure&#xff09;的层次和关联结构非常适合&#xff0c;因为 Neo4j 是一个基于图的数据库&#xff0c;能够自然地建模和存储复杂的关系和层次结构。下面是如何在 Neo4j 中设计和实现这样的数据模型的详细步骤和示例。…

七牛云成功保存但无法显示和访问{“error“:“download token not specified“}

在使用七牛云存储图片时&#xff0c;前端通过链接访问图片时遇到错误&#xff1a; {"error":"download token not specified"} 具体表现为&#xff1a; 后端通过 access_key 和 secret_key 生成了上传和下载的 Token。前端将域名与 res.key 拼接后生成图…

智慧银行反欺诈大数据管控平台方案(四)

智慧银行反欺诈大数据管控平台的核心内容&#xff0c;是通过整合多维度、多层次的金融交易信息&#xff0c;利用先进的大数据分析、机器学习与人工智能算法&#xff0c;构建一个系统性、实时性和智能化的反欺诈管控网络&#xff0c;旨在提供全面、高效、精准的风险评估机制。该…

jmeter基础_打开1个jmeter脚本(.jmx文件)

课程大纲 方法1.菜单栏“打开” 菜单栏“文件” - “打开” &#xff08;或快捷键&#xff0c;mac为“⌘ O”&#xff09;&#xff0c;打开文件选择窗口 - 选择脚本文件&#xff0c;点击“open”&#xff0c;即可打开脚本。 方法2.工具栏“打开”图标 工具栏点击“打开”图标&…

TCP编程案例

笔记&#xff1a;&#xff08;本题可能需要的&#xff09; TCP协议&#xff1a; TCP协议进行通信的两个应用进程&#xff1a;客户端、服务端。 使用TCP协议前&#xff0c;须先建立TCP连接&#xff0c;形成基于字节流的传输数据通道 传输前&#xff0c;采用“三次握手”方式…

静态链接的特点 ;动态链接的特点

1) 静态链接的特点 静态链接&#xff08;Static Linking&#xff09;是在程序编译时&#xff0c;将程序中使用的所有库函数和代码直接复制到最终生成的可执行文件中。其特点包括&#xff1a; 独立可执行文件&#xff1a;生成的可执行文件包含了程序运行所需的所有代码和数据&…

STM32 BootLoader 刷新项目 (十三) Python上位机介绍

STM32 BootLoader 刷新项目 (十三) Python上位机介绍 大家好&#xff0c;这是我们STM32 BootLoader的最后一篇文章了&#xff0c;讲述用Python写的上位机&#xff0c;也更新了半年时间了&#xff0c;谢谢大家的支持&#xff0c;到目前为止&#xff0c;已经更新了12篇文章了&am…

Kronecker Sum

文章目录 1. kronecker sumpython 代码 1. kronecker sum A [ 6 8 1 4 ] ; B [ 5 3 7 6 ] ; \begin{equation} A\begin{bmatrix}6&8\\\\1&4\end{bmatrix};B\begin{bmatrix}5&3\\\\7&6\end{bmatrix}; \end{equation} A ​61​84​ ​;B ​57​36​ ​;​​ k…

ArUco识别定位原理

1. ArUco是什么 ArUco marker是一种汉明码方格图。它由一个宽的黑边和一个内部的二进制矩阵组成&#xff0c;黑色的边界有利于快速检测到图像&#xff0c;Marker ID是他的二进制矩阵编码&#xff0c;Marker size是图片的大小。黑色方块对应0&#xff0c;白色方块对应1&#xf…

每天五分钟机器学习:平行和重合

本文重点 在前面的课程中,我们学习了超平面分离定理,这里面有一个超平面的概念,那么本文学习下,什么情况下超平面是重合的,什么情况下超平面是平行的,这对后面我们学习支持向量机特别重要。 超平面的定义 超平面是指在n维空间中,余维度为1的子空间,即超平面是n维空间…

【学习总结|DAY011】Java数组、二维数组

一、数组概述 在Java编程中&#xff0c;数组是一种用于存储固定大小同类型元素的集合。它提供了随机访问元素的能力&#xff0c;使得处理大量数据变得更加高效。 二、一维数组 1. 定义与初始化 一维数组是最简单的数组形式&#xff0c;其定义方式如下&#xff1a; dataTyp…

Unity 基于Collider 组件在3D 物体表面放置3D 物体

实现 从鼠标点击的屏幕位置发送射线&#xff0c;以射线监测点击到的物体&#xff0c;根据点击物体的法线向量调整放置物体的位置及朝向。 Ray ray Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out RaycastHit hit, 100)) {obj.transform.…

uniapp页面不跳转问题!(使用uni.$u.route或者原生uni.navigateTo)页面跳转ios无效果(既不报错也不跳转页面)

1.问题描述: 通常使用添加事件来触发页面跳转都没问题,但是现在业务需求,在一个方法中自动去携带参数跳转到另外一个页面,android真机无问题,就ios一直无法跳转过去! 2.解决方法: 2.1 必须使用setTimeout来延迟跳转 2.2 setTimeout的延迟时间必须要大于300 不要问为什么…

递归 算法

递归、搜索与回溯算法 1. 汉诺塔2. 合并两个有序链表3. 反转链表4. 两两交换链表中的节点5. Pow&#xff08;x,n&#xff09;-快速幂 1. 汉诺塔 题目链接&#xff1a; 面试题 08.06. 汉诺塔问题 解题思路&#xff1a; 首先观察有一个、两个、三个盘子时的情况&#xff0c;手…