ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

206 反转链表

2022-09-01 20:05:30  阅读:221  来源: 互联网

标签:pre head cur 206 反转 self None next 链表


题目206 反转链表

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]

示例 2:
输入:head = [1,2]
输出:[2,1]

示例 3:
输入:head = []
输出:[]

双指针思路:

  • 定义指针cur指向head,定义指针pre,定义为None,作为链表的最后节点的指向节点
  • 然后开始反转了,定义一个临时指针temp保存cur.next节点,因为反转后cur指针的next指向pre,不在是原先的cur.next节点了,将cur->next 指向pre,此时已经反转了第一个节点了。
  • 接下来,就是循环走如下代码逻辑了,继续移动pre和cur指针。
  • 最后,cur 指针已经指向了null,循环结束,链表也反转完毕了。 此时我们return pre指针就可以了,pre指针就指向了新的头结点。

注意:本来考虑head和head.next是否为空,最后发现为空也不影响结果。

代码

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        # if head != None and head.next != None:
        #     pre = None
        #     cur = head

        #     while cur != None:
        #         temp = cur.next
        #         cur.next = pre

        #         pre = cur
        #         cur = temp
        #     return pre
        # return head

        pre = None
        cur = head

        while cur != None:
            temp = cur.next
            cur.next = pre
            pre = cur
            cur = temp
        return pre

递归思路

建议双指针思路,递归直接不容易写,但是根据双指针代码,可以写出递归代码。

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:
        # pre = None
        # cur = head

        # while cur != None:
        #     temp = cur.next
        #     cur.next = pre
        #     pre = cur
        #     cur = temp
        # return pre

        return self.reverse(None, head)
    def reverse(self, pre, cur):
        while cur != None:
            temp = cur.next
            cur.next = pre
            return self.reverse(cur, temp)
        return pre

标签:pre,head,cur,206,反转,self,None,next,链表
来源: https://www.cnblogs.com/edkong/p/16647637.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有