首页 > 编程语言 >单链表指定区间反转(python)

单链表指定区间反转(python)

时间:2022-12-01 10:58:48浏览次数:37  
标签:pre 单链 cur temp python 反转 表头 next res

单链表中的第m和n之间元素反转

m = 2,n = 4

具体做法:

  • step 1:我们可以在链表前加一个表头,后续返回时去掉就好了,因为如果要从链表头的位置开始反转,在多了一个表头的情况下就能保证第一个节点永远不会反转,不会到后面去。
    • res = ListNode(-1) res.next = head
  • step 2:使用两个指针,一个指向当前节点,一个指向前序节点。
    • #前序节  pre = res #当前节点 cur = head
  • step 3:依次遍历链表,到第m个的位置。
    • for i in range(1,m):       pre = cur       cur = cur.next
  • step 4:对于从m到n这些个位置的节点,依次断掉指向后续的指针,反转指针方向。
    • for i in range(m, n):       temp = cur.next       cur.next = temp.next       temp.next = pre.next       pre.next = temp

       

       

       

       

       

       

       

      得到-1—>1—>3—>2—>4—>5—>6

       

       

       

       

       

       

      得到-1—>1—>4—>3—>2—>5—>6

       

  • step 5:返回时去掉我们添加的表头

    return res.next

def reverseBetween(self , head: ListNode, m: int, n: int) -> ListNode:         # write code here         #加个表头         res = ListNode(-1)         res.next = head         #前序节点         pre = res         #当前节点         cur = head         #找到m         for i in range(1,m):             pre = cur             cur = cur.next         #从m反转到n         for i in range(m, n):             temp = cur.next             cur.next = temp.next             temp.next = pre.next             pre.next = temp         #返回去掉表头         return res.next

标签:pre,单链,cur,temp,python,反转,表头,next,res
From: https://www.cnblogs.com/ailie/p/16940700.html

相关文章

  • 流畅的Python 电子书 pdf
    [巴西]LucianoRamalho著安道,吴珂译 流畅的python这本书能够帮助Python开发人员挖掘这门语言及相关程序库的优秀特性,避免重复劳动,同时写出简洁、流畅、易读、易维......
  • python连接使用达梦
     #!/usr/bin/envpython#coding=utf-8importos,json,urllib,datetime,shutilimportpsycopg2importtracebackimporttimegl_mysql_server="192.168.1.118"......
  • Python制作进度条
    目录tqdm进度条什么时候需要进度条?tqdm基本概念基础用法设置进度条信息自定义控制图形化进度条本博客主要参考为北京大学陈斌老师的下一站Pythontqdm进度条什么时候需......
  • python3 venv虚拟环境创建与安装Django
    创建虚拟环境C:\Users\Xiao>python-mvenvD:\Pythonwork\venvtest​​激活虚拟环境C:\Users\Xiao>D:\Pythonwork\venvtest\Scripts\activate(venvtest)C:\Users\Xiao>​......
  • Python高级-GIL(全局解释器锁)-笔记
    GIL面试题如下描述PythonGIL的概念,以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因。Guido的声明:​​h......
  • python-解力扣题【回文数】
    1.题目以及解题代码解题思路:将整数转换成字符串,然后对比反转后的字符串与原字符串对比,相同就返回true ......
  • Python高级-深拷贝、浅拷贝-笔记
    1.浅拷贝浅拷贝是对于一个对象的顶层拷贝通俗的理解是:拷贝了引用,并没有拷贝内容2.深拷贝深拷贝是对于一个对象所有层次的拷贝(递归)进一步理解深拷贝 3.拷贝的其他方式......
  • Python高级-深拷贝、浅拷贝-笔记
    私有化xx:公有变量_x:单前置下划线,私有化属性或方法,fromsomemoduleimport*禁止导入,类对象和子类可以访问__xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直......
  • Python高级-import导入模块-笔记
    1.import搜索路径路径搜索从上面列出的目录里依次查找要导入的模块文件''表示当前路径列表中的路径的先后顺序代表了python解释器在搜索模块时的先后顺序程序执行时添加......
  • python知识点
    一、pip工具常用的子命令1、install,用于安装库;2、download,用于下载库;3、uninstall,用于卸载库;4、freeze,用以requirements格式导出安装包;5、show,查看某个包的信息6、li......