单链表指定区间反转(python)
单链表中的第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 = curcur = cur.next
-
- step 4:对于从m到n这些个位置的节点,依次断掉指向后续的指针,反转指针方向。
-
for i in range(m, n):temp = cur.next #temp—>3cur.next = temp.next #2—>4temp.next = pre.next #3—>2pre.next = temp #1—>3
得到-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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!