|奇偶链表

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

请尝试使用原地算法完成。你的算法的空间复杂度应为 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 奇偶链表相关推荐

  1. python之链表、单链表、双向链表、单向循环链表

    python之链表.单链表.双向链表.单向循环链表 链表 顺序表的构建需要预先知道数据大小来申请连续的存储空间,而在进行扩充时,又需要进行数据的搬迁,所以使用起来并非很灵活 链表结构可以充分利用计算机 ...

  2. python实现链表反转(转置)

    python实现链表反转(转置) 链表是面试里面经常涉及到的考点,因为链表的结构相比于Hashmap.Hashtable.Concurrenthashmap或者图等数据结构简单许多,对于后者更多面试的 ...

  3. leetcode算法题--奇偶链表

    原理链接:https://leetcode-cn.com/problems/odd-even-linked-list/ 1.双指针 ListNode* oddEvenList(ListNode* he ...

  4. Python 实现链表和二叉树

    Python 实现链表和二叉树 1.链表 class Node:def __init__(self, init_data):self.data = init_dataself.next = Noned ...

  5. python删除链表满足pred的元素_python 数据结构一 之 线性表

    python数据结构教程第一课 从这里将会正式开始讲解python的一些实用的数据结构,原理加上实例源码. 一.简介 二.线性表的抽象数据类型 三.顺序表的实现 四.链接表的实现 1.单链表 2.带尾 ...

  6. python链表_使用python实现链表操作

    一.概念梳理 链表是计算机科学里面应用应用最广泛的数据结构之一.它是最简单的数据结构之一,同时也是比较高阶的数据结构(例如棧.环形缓冲和队列) 简单的说,一个列表就是单数据通过索引集合在一起.在C里面 ...

  7. LeetCode Python实现 链表简单部分

    LeetCode Python实现 链表简单部分 我以前完全没有写过关于链表的东西,node.val=node.next.val#当前值被后一个值覆盖node.next=node.next.next# ...

  8. python创建链表实例_python数据结构链表之单向链表(实例讲解)

    python数据结构链表之单向链表(实例讲解) 单向链表 单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域.这个链接指向链表中的下一个节点,而最后 ...

  9. Java实现 LeetCode 328 奇偶链表

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

最新文章

  1. js关于正则的前后关联约束(前后预查)
  2. 【踩坑之旅】-webpack (v4.8.1) + vue-cli (v2.5.3)升级准备
  3. python办公自动化excel_简直出神入化,教你用Python控制Excel实现自动化办公
  4. PHP中迭代器是什么?
  5. php分页技术的作用,分页原理技术细节剖析(php+mysql)实例
  6. 26个要素,仅仅依靠百度打造成功网站
  7. Git客户端TortoiseGit下载、安装及汉化
  8. BeautifulSoup解析库select方法实例——获取企业信息
  9. java中priorityqueue_详解JAVA中priorityqueue的具体使用
  10. HDU 2460 Network(双连通+树链剖分+线段树)
  11. SolidWorks2022 安装教程
  12. vue引入图片url变量
  13. excel多个工作表合并在一个表
  14. AT89C51单片机共阳极数码管动态显示(汇编语言)
  15. 计算机管理上移动硬盘显示其他设备,移动硬盘坏了插上之后电脑会显示有新设备接入而且设备运转正常,但我 爱问知识人...
  16. linux gtx驱动程序,Nvidia 418.43 发布,支持GeForce GTX 1660 Ti的Linux图形驱动程序
  17. 一份价值百万的大数据分析报告如何炼成?
  18. 收藏了800道Java后端经典面试题,分享给大家,希望你找到自己理想的Offer呀~
  19. 什么是etcd及其原理和应用场景
  20. kickstart自动化系统安装_利用Kickstart自动化安装CentOS的教程

热门文章

  1. 认识哈希函数(散列函数)
  2. NTU生活:NTU景点
  3. 产品运营必须知道的几个概念,什么是用户群体?
  4. 自编码器及相关变种算法简介
  5. MATLAB时间序列的排序函数
  6. shell 打印追加_[转]shell 数组定义、使用和追加
  7. 开源APM技术选型与实战
  8. java原子操作的实现原理--转载
  9. nginx自定义模块编写-实时统计模块--转载
  10. Java 理论与实践: 非阻塞算法简介--转载