leetcode翻转链表(leetcode如何删除链表)

技术LeetCode怎样反转链表这篇文章主要为大家展示了“LeetCode怎样反转链表”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“LeetCode怎样反转链表”这篇文章吧。

本文主要向您展示“LeetCode如何反转链表”。内容简单易懂,条理清晰。希望能帮你解开疑惑。让边肖带领大家学习《LeetCode如何反转链表》这篇文章。

题目描述

反转单个链表。

00-1010输入: 1-2-3-4-5-空

输出: 5-4-3-2-1-空

示例:

链表一般用迭代或递归求解,一般用双指针和三指针构造,如倒链表或DP动态规划。

解题思路

我们可以申请两点。第一个指针称为pre,它最初指向null。

第二个指针cur指向head,然后遍历cur。

每次迭代cur时,将cur的下一个指向pre,然后pre和cur前进一个位置。

所有迭代都结束了(cur变为null),pre是最后一个节点。

java实现

类别解决方案{

public listnode reverselist(listnode head){ 0

//应用程序节点,pre和cur,pre指向null。

ListNodepre=null

ListNodecur=head

ListNodetmp=null

while(cur!=null){ 0

//记录当前节点的下一个节点

tmp=cur.next

//然后将当前节点指向pre

cur.next=pre

//pre和cur节点都前进一位。

pre=cur

cur=tmp

}

returnpre

}

}

Python实现

类别解决方案(对象):

defreverseList(自我,头部):

if nothead or othead . next :

返回头

l=头部

r=head.next

剩余=r.next

下一个=无

whiler:

r.next=l

l=r

r=

nbsp;remain 
            if remain:
                remain = remain.next
        return l

 
 

递归实现:

递归的两个条件:

  • 终止条件是当前节点或者下一个节点==null
  • 在函数内部,改变节点的指向,也就是 head 的下一个节点指向 head 递归函数那句
        head.next.next = head很不好理解,其实就是 head 的下一个节点指向head。

递归函数中每次返回的 cur 其实只最后一个节点,在递归函数内部,改变的是当前节点的指向。

class Solution {
 public ListNode reverseList(ListNode head) {
  //递归终止条件是当前为空,或者下一个节点为空
  if(head==null || head.next==null) {
   return head;
  }
  //这里的cur就是最后一个节点
  ListNode cur = reverseList(head.next);
  //如果链表是 1->2->3->4->5,那么此时的cur就是5
  //而head是4,head的下一个是5,下下一个是空
  //所以head.next.next 就是5->4
  head.next.next = head;
  //防止链表循环,需要将head.next设置为空
  head.next = null;
  //每层递归函数都返回cur,也就是最后一个节点
  return cur;
 }
}

 

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        if not head or head.next == None: return head
        res = self.reverseList(head.next)
        head.next.next = head
        head.next = None
        return res

以上是“LeetCode怎样反转链表”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/147020.html

(0)

相关推荐

  • 荞麦面条怎么做才好吃,莜面粉怎么做成好吃的东西

    技术荞麦面条怎么做才好吃,莜面粉怎么做成好吃的东西这个我最清楚了荞麦面条怎么做才好吃,因为俺家就产莜面的 1、用开水活面,一定用刚烧开的水,(会出来一种很香的味)你可以把他搓成一根一根(要尽快的搓,凉了就不好搓了,搓不

    生活 2021年11月1日
  • 拼多多可以用花呗吗,京东淘宝拼多多分别用什么付款

    技术拼多多可以用花呗吗,京东淘宝拼多多分别用什么付款京东是京东自己的白条或者网银还有微信拼多多可以用花呗吗,淘宝可以支付宝跟网银,
    拼多多可以微信或者支付宝还有网银。
    无论是淘宝还是京东,就目前来看,都属于两个做得非常大

    生活 2021年10月31日
  • Utools工具的使用方法

    技术Utools工具的使用方法本篇文章为大家展示了Utools工具的使用方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。这几天偶然间发现了一款电脑桌面工具,其功能简直令我欣喜若

    攻略 2021年10月28日
  • debug D命令如何查看指定地址的内容

    技术debug D命令如何查看指定地址的内容这期内容当中小编将会给大家带来有关debug D命令如何查看指定地址的内容,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。    IDE :

    攻略 2021年11月11日
  • 如何使用Elastic+logstash+filebeat做Nginx日志分析

    技术如何使用Elastic+logstash+filebeat做Nginx日志分析这篇文章将为大家详细讲解有关如何使用Elastic+logstash+filebeat做Nginx日志分析,小编觉得挺实用的,因此分享给大

    攻略 2021年11月24日
  • Python中数据结构list怎么用

    技术Python中数据结构list怎么用这篇文章给大家分享的是有关Python中数据结构list怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。list是一种有序可重复的集合,可以随时添加

    攻略 2021年11月24日