24_剑指offer_java_反转链表

Vivaldi天线HFSS建模实战:从参数化曲线到辐射优化的完整流程 本文详细介绍了Vivaldi天线在HFSS中的建模与优化全流程,涵盖参数化曲线绘制、馈电系统设计及性能验证等关键步骤。通过实战案例分享,帮助工程师掌握超宽带天线的HFSS建模技巧,提升雷达探测和通信系统设计效率。重点解析了指数渐变曲线建模、微带馈电优化等核心技术要点。 阅读详情

目录

 

题目描述

测试用例

题目考点

解题思路

自己解题(两个指针)

参考解题(参考书上,三个指针)


题目描述

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

链表节点定义如下:

public class ListNode {

    int val;

    ListNode next = null;

}

测试用例

  • 功能测试(输入的链表含有多个节点;链表中只有一个节点)
  • 特殊功能测试(链表头节点为空指针)

题目考点

  • 考察应聘者对链表、指针的编程能力
  • 考察应聘者思维的全面性及写出来的代码的鲁棒性

解题思路

主要的过程有以下三步:

  1. 定义一个将指向反转链表的头指针和一个保存临时节点的指针
  2. 循环头节点的下一个节点,如果不为空,则将它的下一个节点作为新的头结点,并用临时节点保存之前头节点
  3. 然后就是链表的重排问题了,首先原链表的头结点,将指向的新的头节点的下一个节点,新的头节点将指向原来的头结点

自己解题(两个指针)

public class Solution {
    /**
     * 自己解法
     * @param head
     * @return
     */
    public ListNode ReverseList(ListNode head) {
        if (head == null) {
            return null;
        }
        ListNode currHead = head;
        ListNode temp = null;
        while (head.next != null) {
            temp = currHead;
            currHead = head.next;
            head.next = head.next.next;
            currHead.next = temp;
        }
        return currHead;
    }
}

 

参考解题(参考书上,三个指针)

 

public class Solution {
    public ListNode ReverseList(ListNode head) {
        //异常
        if(head == null){
            return null;
        }
        // 三个指针,前,中(当前新头节点),后
            ListNode pre = null;
            ListNode pNode = head;
            ListNode aft = null;
            ListNode pReversedHead = null;
        while(pNode != null){
            aft = pNode.next;
            if(aft == null){
                // 链尾,返回新链表头
                 pReversedHead = pNode;
            }
            pNode.next = pre;
            pre = pNode;
            pNode = aft;
        }
        return pReversedHead;
    }
}

补充

自已多花时间找出问题并修正问题比在面试官找出问题再去慌慌张张修改代码要好很多。

与其写出漏洞百出的代码,不如提前分析一波思路出来。

其实面试官检查应聘者所写代码的方法也是用他事先准备好的测试用例来进行测试。如果应聘者能够想到这些测试用例,并用它们来测试自己的代码,就能保证有备无患了。

STM32 USB AUDIO实战指南——从零构建音频设备 本文详细介绍了如何使用STM32F407构建USB音频设备,从硬件准备到软件配置,再到音频播放和录制功能的实现。通过STM32CubeMX配置和实战代码示例,帮助开发者快速掌握USB Audio Class规范,实现低延迟、高质量的音频传输,适用于语音交互、音乐播放等多种场景。 阅读详情

相关推荐

C# HttpClient 实战:3步绕过Cloudflare指纹拦截,获取完整网页内容

本文详细介绍了如何使用C# HttpClient绕过Cloudflare指纹拦截,获取完整网页内容的3步实战方案。通过完美复制浏览器请求头、智能管理Cookie容器以及处理动态挑战页面,开发者可以有效突破Cloudflare的反爬机制,适用于爬虫开发和数据采集项目。

weixin_31856057的博客 321

Java实现链表反转的两种思路

Java实现链表反转的两种思路

Cavewang的博客 1364

LPDDR4x 深度解析(3) - SDRAM核心操作机制

本文深入解析LPDDR4x SDRAM的核心操作机制,包括基础架构、刷新操作、读写流程及低功耗设计。详细介绍了存储阵列、地址解码器等关键模块,以及自刷新与自动刷新模式的区别。通过实测数据和技术细节,揭示LPDDR4x在性能优化和功耗控制方面的创新设计,为硬件工程师提供实用参考。

weixin_29278805的博客 308

Java - 反转链表

算法基础-反转链表

分数没二舅血压高 6318

【电弧故障检测算法全解析,电弧串扰问题分析和解决算法】

本文系统分析了电弧故障检测算法及串扰问题解决方案。电弧检测主要采用时频域分析和机器学习方法,通过提取高频噪声、波形畸变等特征实现故障识别。针对电弧串扰问题,提出了自适应滤波、盲源分离和时频联合分析等算法。研究给出了Python和C语言的算法实现示例,包括高频能量检测、过零率计算和陷波滤波器设计。最后指出算法优化方向:实时性提升可采用滑动窗口FFT和硬件加速;抗干扰增强需结合硬件滤波;机器学习扩展可引入随机森林等分类器。该研究为电弧故障检测系统开发提供了完整的技术路线。

syttt的专栏 891

LwIP在国产MCU的落地实践:从协议栈优化到网络稳定性实战

本文详细介绍了LwIP协议栈在国产GD32F407 MCU上的移植与优化实践,涵盖硬件平台选择、驱动适配、协议栈调优和网络稳定性提升策略。通过内存管理优化、实时操作系统集成和性能测试,为工业物联网应用提供高可靠性网络通信解决方案,显著提升数据传输效率和系统稳定性。

m2n3b4v5c6的博客 270

反转链表的多种解决方法(java)

反转链表的三种方式

2301_80279608的博客 1371

<视觉>——单目相机的标定(简单原理+Opencv实现)

单目相机的标定原理大致如下: 世界坐标到像素坐标的转换。 期间的参数有S尺度因子,内参矩阵K,旋转矩阵R,平移矩阵T,一共八个未知数。 在Opencv中我们可以方便的根据相机拍摄不同位姿的标定板图片来标定相机,从而求得这些参数,从而可以将相机下的坐标和实际的世界坐标联系起来,求取单应性矩阵H 参考: 单目相机综述:写的特别好 https://www.cnblo...

Kano365的博客 1万+

反转链表的Java方式实现

反转链表(reverse-linked)的Java方式实现

qq_50721879的博客 1314

模板匹配加速之金字塔分层搜索

图像金字塔是一种多分辨率图像表示方法,它通过一系列逐渐缩小或放大的图像来表示原始图像的不同尺度。高斯金字塔(Gaussian Pyramid):通过不断下采样(降采样)生成更小的图像。拉普拉斯金字塔(Laplacian Pyramid):通过高斯金字塔和差分操作生成一组残差图像。在模板匹配中,我们主要使用高斯金字塔来实现多尺度匹配。金字塔灰度模板匹配通过多尺度搜索策略,在保持较高准确率的同时显著提升匹配速度,尤其适用于:高分辨率图像处理实时检测系统移动端设备等资源受限场景。

weixin_44969144的博客 1732

dell r630 配置raid_DELL服务器RAID配置图文教程

名称解释:Disk Group:磁盘组,这里相当于是阵列,例如配置了一个RAID5,就是一个磁盘组VD(Virtual Disk): 虚拟磁盘,虚拟磁盘可以不使用阵列的全部容量,也就是说一个磁盘组可以分为多个VDPD(Physical Disk): 物理磁盘HS:Hot Spare 热备Mgmt:管理【一】创建逻辑磁盘1、按照屏幕下方的虚拟磁盘管理器提示,在VD Mgmt菜单(可以通过CTRL+P...

weixin_33253741的博客 3510

Java——反转链表

输入:head = [1,2,3,4,5], left = 2, right = 4。给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]来源:力扣(LeetCode)来源:力扣(LeetCode)输出:[5,4,3,2,1]输出:[1,4,3,2,5]

申俏雅的博客 1406

基于大模型的恶性胸腔积液全周期预测与诊疗方案研究

本研究基于大模型技术构建了恶性胸腔积液全流程预测与诊疗体系,涵盖术前风险评估、术中方案优化、术后恢复预测及并发症预防。通过整合多源医疗数据,实现了手术风险概率预测(准确率80%)、并发症预警(AUC值0.85)及个性化康复方案制定,显著提升诊疗精准度。研究创新性地将Transformer架构与多模态数据融合,在100例临床验证中显示良好性能,但存在数据样本局限、模型可解释性不足等问题。未来将扩大多中心临床验证,优化算法可解释性,探索与基因检测等技术的结合应用,推动恶性胸腔积液的精准诊疗发展。

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1898

剑指Offer系列(java版,详细解析)24.反转链表

题目描述 剑指 Offer 24. 反转链表 难度简单189 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 注意:本题与主站 206 题相同:https://leetcode-cn.com/problems/reverse-linked-list/ 链表节点定

Viper的程序员修炼手册 710

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

剑指offer—24.反转链表—分析及代码(Java)

剑指offer——24.反转链表——分析及代码[Java]一、题目二、分析及代码1. 三指针(1)思路(2)代码(3)结果三、其他 一、题目 输入一个链表,反转链表后,输出新链表的表头。 二、分析及代码 1. 三指针 (1)思路 设计三个指针,分别指向前一结点、当前结点和后一结点,依次对链表进行处理。 (2)代码 public class Solution { public ListNod...

江南土豆的博客 300

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

LeetCode 之 剑指 Offer 24. 反转链表(Java)

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。双指针,时间复杂度O(n)

渣渣的夏天 1175

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

剑指OFFER笔记_24_反转链表_JAVA实现

剑指OFFER笔记_24_反转链表_JAVA实现题目:反转链表解题思路代码ListNode结构代码函数主体部分代码测试部分代码运行结果截图LeetCode运行截图 题目:反转链表 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 解题思路 此题需要考虑到一个关键点:当一个节点的next被修改后,如何找到该节点的原next节点?我采取了提前保存的方法。 起始的head节点如何处理?应该让这个节点指向null,也就是作为尾节点。 如何判断到了尾节点?当这个节点的next==null

YesPlease的博客 330

剑指offer24 反转链表 学习中 Java

调用递归方法(3),即head.next=3,方法获取指针值head开始指向3,head->3,而不是开始初始化的数据,现在初始head->3;调用递归方法(4),即head.next=4,方法获取指针值head开始指向4,head->4,而不是开始初始化的数据,现在初始head->4;1、head=1,终止条件false;调用递归方法(2),即head.next=2,方法获取指针值head开始指向2,head->2,而不是开始初始化的数据,现在初始head->2;...

weixin_52632501的博客 364

24. 反转链表(剑指 Offer 题解Java版,面试常考)

要求很简单,输入一个链表,反转链表后,输出新链表的表头。   反转链表是有2种方法(递归法,遍历法)实现的,面试官最爱考察的算法无非是斐波那契数列和单链表反转,递归方法实现链表反转比较优雅,但是对于不了解递归的同学来说还是有理解难度的。

youif的博客 2611

Java详解剑指offer面试题24--反转链表

Java详解剑指offer面试题24–反转链表 输入一个链表的头结点,反转链表后,并返回反转链表的头结点。 用栈实现,不推荐 本题容易想到用栈,但是空间复杂度为O(N)不推荐。 package Chap3; import java.util.LinkedList; /** * 输入一个链表的头结点,反转链表后,并返回反转链表的头结点。 */ public class ReverseLinkedList { private class ListNode { int val

快乐李同学的博客 490

【java】剑指offer24_反转链表

题目描述 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 解题思路一:迭代,利用之前的指针思路,在遍历链表时,将当前节点的next 指针改为指向前一个节点。由于节点没有引用其前一个节点,因此必须事先存储其前一个节点。在更改引用之前,还需要存储后一个节

ic_xcc的博客 140

【LeetCode】剑指 Offer 24. 反转链表(Java)

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 解法一 List /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode reverseList(ListNode

小楊同学的笔记本 286

【LeetCode力扣】剑指 Offer 24. 反转链表(Java)

剑指 Offer 24. 反转链表

花开淡墨Cc的博客 402

剑指 Offer 24. 反转链表 【c++/java详细题解】

目录1、题目2、思路3、c++代码4、java代码 1、题目 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <=5000 2、思路 (双指针,迭代) (n)(n)(n) 给定一个链表的头节点,让我们反转该链表并输出反转后链表的头节点。 样例: 如样例所示,原始链表为1-&

林深不见鹿 的博客 2355

剑指 Offer 24. 反转链表 Java版

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: 0 <= 节点个数 <= 5000 思路一:指针 public ListNode reverseList(ListNode head) { //初始设定 ListNode pre = null; List

airyv的博客 120

剑指offer 面试题24:反转链表(java)

题目:   定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 分析:   反转后链表的头节点即为原链表的尾结点(m_pNext为null的节点)。   反转的过程中,要定义三个指针,分别指向当前遍历到的节点index,它的前一个节点i以及后一个节点j。因为当在反转时,如果将当前节点的下一个节点指向其前一个节点i,那么就要知道其前一个节点。如果不事先保存其后一个节点,那么当前节点的下一个节点为前一个节点时index.next=i,要进行接下来的反转时,就找不到i原来的下一个节点了,所

Peanut的博客 669
上一篇: 机器学习_SVM实现多分类_持续更新
下一篇: 25_剑指offer_java_合并两个排序的链表
Longtermevolution
博客等级 码龄9年 113粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值