# Python one pass iterative solution

• The idea is simple and intuitive: find linkedlist [m, n], reverse it, then connect m with n+1, connect n with m-1

``````class Solution:
# @param m, an integer
# @param n, an integer
# @return a ListNode
if m == n:

dummyNode = ListNode(0)
pre = dummyNode

for i in range(m - 1):
pre = pre.next

# reverse the [m, n] nodes
reverse = None
cur = pre.next
for i in range(n - m + 1):
next = cur.next
cur.next = reverse
reverse = cur
cur = next

pre.next.next = cur
pre.next = reverse

return dummyNode.next``````

• This post is deleted!

• what is pre.next.next?

• @IWantToPass pre.next refers to the end of the reversed list (first prev = None), pre.next.next links it to the latter part of the none reversed list.(1-->2, 2-->5)

• Great solution. I have the same idea but was struggling on how to implement it.
However I am confused why in the end return dummyNode.next instead of head.
shouldn't dummyNode.next==head? but when I tried the latter, the code is not accepted.
Would you elaborate this part a little bit?@Google
Thanks!!!

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.