-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreverse_linked_list.py
68 lines (51 loc) · 1.17 KB
/
reverse_linked_list.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
'''
Problem Number: 206
Difficulty level: Easy
Link: https://leetcode.com/problems/reverse-linked-list/
Author: namratabilurkar
'''
'''
prev -> curr -> after
after -> curr -> prev
1. Have a temp node
2. Store the data of after in temp node
3. Store prev.next in temp.next
4. Store prev.data in after.data
5. Set prev.next to null
6. Set temp node to prev node
------- No altering the data of any nodes -------
1. Have a temp node
2. Set temp = prev
3. Set after.next = curr
4. Set prev = after
5. Set after = temp
6. Set curr.next = after
temp
after <- curr <- prev
------- If curr is head -------
curr(head) -> after
None <- curr <- after
1. curr.next = None
2. after.next = curr
curr <- after
'''
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
prev = None
curr = head
while curr is not None:
temp = curr.next
curr.next = prev
prev = curr
curr = temp
head = prev
return head