python 奇偶链表
|奇偶链表
给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。
请尝试使用原地算法完成。你的算法的空间复杂度应为 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
|题解
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:"""解题思路:1.通过count记录节点位置,按奇偶划分2.分别创建 奇数头指针 和 偶数头指针3.把对应位置的数据用头指针串联起来4.奇数链表和偶数链表拼接 """def oddEvenList(self, head: ListNode) -> ListNode:cur = headcount = 1 # 记录当前节点的位置# even_head 作为偶数链表的头指针 even_head = Noneeven_tail = None# 引入偶数链表的虚拟头节点,目的是使下面的处理逻辑保持一致node = ListNode()even_head = nodeeven_tail = even_head# odd_head 作为奇数链表的头指针odd_head = Noneodd_tail = None# 引入奇数链表的虚拟头节点,目的是使下面的处理逻辑保持一致node = ListNode()odd_head = nodeodd_tail = odd_headwhile cur:per = cur.next# count跟2求余,如果余数为0,则当前节点为偶数节点,否则为奇数节点cur.next = None # 赋值为None的目的是 只区当前节点,截断后面的节点,如果不截断会出现最后一个节点,即在奇数链表,又在偶数链表if count % 2 == 0:even_tail.next = cureven_tail = curelse:odd_tail.next = curodd_tail = curcount += 1cur = perodd_tail.next = even_head.nextreturn odd_head.next
python 奇偶链表相关推荐
- python之链表、单链表、双向链表、单向循环链表
python之链表.单链表.双向链表.单向循环链表 链表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时,又需要进行数据的搬迁,所以使用起来并非很灵活 链表结构可以充分利用计算机 ...
- python实现链表反转(转置)
python实现链表反转(转置) 链表是面试里面经常涉及到的考点,因为链表的结构相比于Hashmap.Hashtable.Concurrenthashmap或者图等数据结构简单许多,对于后者更多面试的 ...
- leetcode算法题--奇偶链表
原理链接:https://leetcode-cn.com/problems/odd-even-linked-list/ 1.双指针 ListNode* oddEvenList(ListNode* he ...
- Python 实现链表和二叉树
Python 实现链表和二叉树 1.链表 class Node:def __init__(self, init_data):self.data = init_dataself.next = Noned ...
- python删除链表满足pred的元素_python 数据结构一 之 线性表
python数据结构教程第一课 从这里将会正式开始讲解python的一些实用的数据结构,原理加上实例源码. 一.简介 二.线性表的抽象数据类型 三.顺序表的实现 四.链接表的实现 1.单链表 2.带尾 ...
- python链表_使用python实现链表操作
一.概念梳理 链表是计算机科学里面应用应用最广泛的数据结构之一.它是最简单的数据结构之一,同时也是比较高阶的数据结构(例如棧.环形缓冲和队列) 简单的说,一个列表就是单数据通过索引集合在一起.在C里面 ...
- LeetCode Python实现 链表简单部分
LeetCode Python实现 链表简单部分 我以前完全没有写过关于链表的东西,node.val=node.next.val#当前值被后一个值覆盖node.next=node.next.next# ...
- python创建链表实例_python数据结构链表之单向链表(实例讲解)
python数据结构链表之单向链表(实例讲解) 单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域.这个链接指向链表中的下一个节点,而最后 ...
- Java实现 LeetCode 328 奇偶链表
328. 奇偶链表 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起.请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性. 请尝试使用原地算法完成.你的算法的空间复杂 ...
最新文章
- js关于正则的前后关联约束(前后预查)
- 【踩坑之旅】-webpack (v4.8.1) + vue-cli (v2.5.3)升级准备
- python办公自动化excel_简直出神入化,教你用Python控制Excel实现自动化办公
- PHP中迭代器是什么?
- php分页技术的作用,分页原理技术细节剖析(php+mysql)实例
- 26个要素,仅仅依靠百度打造成功网站
- Git客户端TortoiseGit下载、安装及汉化
- BeautifulSoup解析库select方法实例——获取企业信息
- java中priorityqueue_详解JAVA中priorityqueue的具体使用
- HDU 2460 Network(双连通+树链剖分+线段树)
- SolidWorks2022 安装教程
- vue引入图片url变量
- excel多个工作表合并在一个表
- AT89C51单片机共阳极数码管动态显示(汇编语言)
- 计算机管理上移动硬盘显示其他设备,移动硬盘坏了插上之后电脑会显示有新设备接入而且设备运转正常,但我 爱问知识人...
- linux gtx驱动程序,Nvidia 418.43 发布,支持GeForce GTX 1660 Ti的Linux图形驱动程序
- 一份价值百万的大数据分析报告如何炼成?
- 收藏了800道Java后端经典面试题,分享给大家,希望你找到自己理想的Offer呀~
- 什么是etcd及其原理和应用场景
- kickstart自动化系统安装_利用Kickstart自动化安装CentOS的教程