Reverse Linked List

内网渗透—横向移动&IPC横移&Impacket套件&CS插件 以上便是IPC横移的知识。最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。 阅读详情

Reverse a singly linked list.

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

1 iteratively

原本的链表如果是这样的话:

1 --> 2 --> 3 --> 4 --> 5

我们要做的就是:

1 <-- 2 <-- 3 <-- 4 <-- 5

所以其他的不变,只是改变next的指向即可。在修改一个节点的next之前,一定要先保存这个值。值得注意的一点是,1 与 2 之间,不光要将箭头方向改为 2 指向 1,也要把节点 1 的next 设为 null,不然会报错。即head.next = null。

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode reverseList(ListNode head) {
        if(head == null) return null;
        //如果只有一个节点,根部不用reverse,直接返回head
        if(head.next == null) return head;

        ListNode pre, curr, nx;
        pre = head;
        curr = head.next;
        head.next = null;
        while((nx = curr.next) != null){
            curr.next = pre;
            pre = curr;
            curr = nx;
        }
        curr.next = pre;
        return curr;
    }
}

2 recursively

因为递归并没有迭代那么直观,所以博主对于要用递归求解的题目往往反应很慢,对于一些递归的代码也需要花较多的时间思考,所以博主在这里理一理思路,锻炼一些“递归思维”。对递归比较拿手的直接看代码就好。

还是拿

1 --> 2 --> 3 --> 4 --> 5

举例。

既然要用递归来写,那么一定有收敛条件,很明显,在上面就已经发现了:

if(head == null) return null;
//如果只有一个节点,根部不用reverse,直接返回head
if(head.next == null) return head;

然后递归就是在方法里面调用方法本身,但是参数是将原求解域缩小之后的输入,所以这里的递归合理猜测为:

reverseList(head.next);

产生的效果应该是:

1 --> 2 <-- 3 <-- 4 <-- 5

返回值是节点5的引用。那么增加哪些操作才能与这递归后的结果结合在一起,得到最后的答案(1 <– 2 <– 3 <– 4 <– 5)呢?我想聪明的你早已发现:将节点2的next指向节点1,节点1的next改为null不就好了嘛。

所以,完整的递归代码是:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
public class Solution {
    public ListNode reverseList(ListNode head) {
        if(head == null) return null;
        if(head.next == null) return head;

        ListNode result = reverseList(head.next);
        ListNode l2 = head.next;
        l2.next = head;
        head.next = null;

        return result;
    }
}
黑猫带你学UFS协议第13篇:UFS初始化详解(Boot Operation) 本文详细解析了UFS设备的初始化过程,包括部分初始化、加载启动代码(可选)和初始化完成三个阶段。重点介绍了如何通过设备描述符和逻辑单元描述符配置引导特性,以及如何从UFS设备加载启动代码。内容适用于嵌入式硬件和存储领域的开发者。 阅读详情

相关推荐

K210视觉项目上位机避坑指南:解决C#解析ESP8266 TCP图像流的乱码、卡顿与连接中断

本文详细解析了K210与ESP8266在视觉项目中的上位机开发问题,重点解决TCP图像流解析中的乱码、卡顿与连接中断问题。通过自定义协议、JPEG流重组、TCP连接优化等实战技巧,提升系统稳定性和性能,适用于嵌入式视觉开发者和C#上位机程序员。

weixin_28730131的博客 402

leetcode 92. Reverse Linked List II

思路很简答,但一次性通过还是有点难度的。是第206题的进阶版。

weixin_41554427的博客 743

Android开发必备:TBS腾讯浏览服务静态集成完整指南(附Demo下载)

本文详细解析了Android开发中TBS腾讯浏览服务的静态集成方案,通过对比动态集成,深入剖析了其核心原理与适用场景。文章提供了从环境准备、资源获取、项目配置到代码初始化的完整指南,并重点介绍了WebView与文件预览等高级特性的实战应用。针对集成过程中的常见问题,提供了详尽的排查清单与性能调优建议,旨在帮助开发者构建极致稳定、不依赖网络的WebView与文件预览功能。文末附有经过验证的Demo项目可供下载参考。

earth的博客 366

Reverse Linked List II

https://leetcode.com/problems/reverse-linked-list-ii/ Reverse Linked List II Reverse a linked list from positionmton. Do it in-place and in one-pass. For example:Given1->2->3-&g...

weixin_30553065的博客 81

光耦继电器电路分析

光耦电路的分析笔记

MingYue_SSS的博客 6873

2024.6.10丨基于DIAMOND与VFDB数据库的致病菌毒力因子高效注释指南

本文详细介绍了基于DIAMOND与VFDB数据库的致病菌毒力因子高效注释方法,涵盖工具安装、参数优化、数据库选择及实战案例解析。通过DIAMOND的快速比对和VFDB的全面毒力因子数据,显著提升微生物基因组研究效率,适用于临床检测、食品安全监测等多个场景。

weixin_33712987的博客 375

[LeetCode] 206. Reverse Linked List

题目内容 https://leetcode-cn.com/problems/reverse-linked-list/ Reverse a singly linked list. Example: Input: 1->2->3->4->5->NULL Output: 5->4->3->2->1->NULL 题目思路 这个就是基...

Reyiiiin的深夜一点半 107

Human3.6M 数据集介绍及下载

360 万张 3D 人体姿势和对应图像11 名专业演员(6 男 5 女)7 个场景(讨论、吸烟、拍照以及打电话等等)

XavierJ的博客 3万+

Leetcode 206 Reverse Linked List

题意描述 Reverse a singly linked list.反转链表是一个基础问题,但也是一个很重要的问题。 Example: Input: 1-&amp;gt;2-&amp;gt;3-&amp;gt;4-&amp;gt;5-&amp;gt;NULL Output: 5-&amp;gt;4-&amp;gt;3-&amp;gt;2-&amp;gt;1-&amp;gt;NULL 思路解析一 通过prev、cur、nex三个指

herosunly的博客 1万+

MQTT与物联网平台(一):基础知识和设备接入物联网平台的实现(以华为云为例)

本文简单介绍了MQTT的基础知识和使用方法,以蓝牙WIFI双模芯片W801作为硬件设备,接入到华为云。

weixin_50622833的博客 1万+

在Ubuntu系统中安装和使用wxPython进行Python图形用户界面(GUI)开发

在本文中,我将向您展示如何在Ubuntu系统上安装和使用wxPython,并提供一些示例代码来帮助您开始使用这个强大的工具。在MyFrame的构造函数中,我们创建了一个wx.Panel和一个按钮,并将按钮的点击事件绑定到一个自定义的方法on_button_click上。最后,我们创建了一个wx.App的实例,创建了一个MyFrame对象并显示它,最后通过调用app.MainLoop()启动应用程序的主事件循环。这只是一个简单的示例,但它演示了如何使用wxPython创建一个基本的GUI应用程序。

qq_37934722的博客 1038

LeetCode 92. Reverse Linked List II

Reverse a linked list from positionmton. Do it in one-pass. Note:1 ≤m≤n≤ length of list. Example: Input: 1->2->3->4->5->NULL, m = 2, n = 4 Output: 1->4->3->2->5-...

qq_39638957的博客 102

Android 车联网——CarAudioService介绍(六)

CarAudioService 是 Android Automotive OS 中的一个重要组件,用于管理车辆中的音频功能。它是 Android Auto 的一部分,负责处理车辆音频的播放、控制和路由。CarAudioService 使用标准的 Android 组件架构,基于 Binder 通信机制,提供了一组 API,用于管理车辆音频。它包括以下主要功能:音频路由管理:CarAudioService 可以让开发者控制音频的路由,即将音频发送到不同的输出设备,例如车辆的扬声器、耳机等。

小旭的专栏 3200

LeetCode 92. Reverse Linked List II(链表)

题目来源:https://leetcode.com/problems/reverse-linked-list-ii/ 问题描述 92.Reverse Linked List II Medium Reverse a linked list from positionmton. Do it in one-pass. Note:1 ≤m≤n≤ length of list. ...

da_kao_la的博客 196

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

LeetCode Reverse Linked List

翻转一个单向链表。

DRFish 1483

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: Contains Duplicate
下一篇: Roman to Integer/Integer to Roman
奋起直追CDS
博客等级 码龄11年 57粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值