一、题目
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
二、分析
反转链表的典型题,采用双指针操作的方法。循环截止条件:current在每一步后都会向后移序,从链表头节点开始,一直到尾节点。
把机器当成二百五,你需要告诉它每一步该怎么做!!!
常规: 1、current指向pre 2、第一次反转结束,移动pre指针,pre=current
3、移动current指针,current应该指向原链表的current.next,此时发现current.next已经是none了,那么我们就应该在第1步之前就要保存current.next的值,在第3步赋给current
三、代码
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def reverseList(self, head):
"""
:type head: Optional[ListNode]
:rtype: Optional[ListNode]
"""
#双指针方法,初始化指针
pre=None
current=head
while current:
temp=current.next
current.next=pre
pre=current
current=temp
return pre

358

被折叠的 条评论
为什么被折叠?



