【LeetCode每天一题】Reverse Linked List(链表反转)

Reverse a singly linked list.

Example:           Input: 1->2->3->4->5->NULL                   Output: 5->4->3->2->1->NULL

Follow up:

A linked list can be reversed either iteratively or recursively. Could you implement both?

 

解决思路:使用原地改变链表的指针进行反转。时间复杂度为O(n),空间复杂度为O(1). 流程图如下:

     

   

 1 class Solution(object):
 2     def reverseList(self, head):
 3         """
 4         :type head: ListNode
 5         :rtype: ListNode
 6         """
 7         pre = None   # 定义前驱节点
 8         cur = head   #  定义后驱节点
 9         while cur:     # 当cur为空时,循环结束
10             tem = cur.next       # 使用临时变量保存下一个节点
11             cur.next = pre       # 指向前驱节点
12             pre = cur            # 前驱节点复制到当前节点
13             cur = tem            # 临时变量进行复制
14         return pre

 

转载于:https://www.cnblogs.com/GoodRnne/p/10584541.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值