力扣网-876链表的中间结点Java实现

避开这些坑!QMT多因子策略实盘中的5个常见错误及解决方案 本文深入剖析了在QMT平台上实施多因子策略时常见的5个错误,包括因子过拟合、数据延迟处理不当、因子失效、交易成本低估和风险控制缺失,并提供了实用的解决方案。通过优化因子筛选、数据对齐和动态管理,帮助量化交易者提升策略稳健性和实盘表现。 阅读详情

题目描述:
给定一个带有头结点 head 的非空单链表,返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。
示例1:
在这里插入图片描述
示例2:
在这里插入图片描述
提示:

  • 给定链表的结点数介于1和100之间

思路:

  1. (解法1)我们可以先求出长度,然后循环遍历将值存到list种,然后长度/2则是中间结点。
  2. (解法2)快慢指针法。慢指针一次走一步,快指针一次走两步,快指针走到末端,慢指针正好指向中间结点。如果快指针为空,慢指针正好指向中间结点,链表结点数为偶数。如果快指针为空,慢指针正好指向第二个中间结点,链表结点数为奇数。

代码

解法一

class Solution {
    public ListNode middleNode(ListNode head) {
        if(head == null){
            return head;
        }
        List<ListNode> list = new ArrayList<ListNode>();	//创建一个list用于存储
        while(head != null){	//只要头指针不是null,则一直循环
            list.add(head);	//将当前头指针的内容添加到list
            head = head.next;	//然后将头指针往后移
        }
        return list.get(list.size() / 2);	//最后输出中间结点,不论奇偶都符合题目条件
    }
}

解法二(快慢指针法)

public ListNode middleNode(ListNode head) {
    ListNode slow = head;	//定义一个慢指针
    ListNode fast = head;	//定义一个快指针
    while (true){
        if(fast==null || fast.next ==null){	
            return slow;
        }
        slow = slow.next;	//慢指针向后走一步
        fast = fast.next.next;	//快指针向后走两步
    }
}
嵌入式面经篇八——进程&线程 记录一些招聘公司在招聘嵌入式软件岗位时的一些问题,此文为第八篇。进程上文:是指进程由用户态切换到内核态时需要保存用户态时CPU寄存器中的值,进程状态以及堆栈上的内容。即保存当前进程的状态,以便再次执行该进程时,能够恢复切换时的状态,继续执行。进程下文:是指切换到内核态后执行的程序,即进程运行在内核空间的部分。中断上文:硬件通过中断触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理。 阅读详情

相关推荐

电商秒杀场景下,如何用Redis+Lua脚本实现原子性库存扣减(附完整代码)

本文针对电商秒杀场景下的高并发与超卖难题,详细解析了如何利用Redis的原子性命令与Lua脚本实现可靠的库存扣减。通过对比多种方案,阐述了Redis+Lua作为黄金搭档的技术原理,并提供了从基础扣减到预扣减模型的完整代码实现,确保在高并发下数据的一致性与系统性能。

weixin_29219539的博客 503

Java中同时输入字符串和int类型出错的处理方式

在Java中,如果输入int类型和字符串处理不当会产生错误,例如:如果先输入int类型,在输入字符串类型,如下代码: Scanner sc=new Scanner(System.in); int a=sc.nextInt(); String b=sc.nextLine(); System.out.println(a); System.out.println(b); 在...

bigsai 1万+

从Mule ESB到Apache Camel:手把手教你设计一个轻量级企业集成框架的‘心脏’

本文深入探讨了从Mule ESB到Apache Camel的轻量级企业集成框架设计实践,对比了两者在协议支持、消息处理能力和部署灵活性等方面的差异。通过实际代码示例和性能优化技巧,帮助开发者构建高效的核心模块,适用于现代微服务架构下的系统集成需求。

weixin_28738165的博客 375

876.链表的中间节点(力扣) Java实现

给定一个带有头结点head的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.val = 3, ans.ne...

qq_42006733的博客 423

DeepL Pro免费使用技巧与API调用优化方案

机器翻译技术通过神经网络模型实现跨语言语义转换,其核心价值在于保持专业术语准确性的同时实现自然语言流畅度。现代翻译工具如DeepL采用注意力机制等深度学习技术,在医疗、法律等专业领域展现出接近人工翻译的质量。针对API调用场景,开发者可通过请求模拟实现小批量自动化处理,而文档预处理和术语库优化则能显著提升免费额度使用效率。本文重点解析如何通过字符计算优化、临时接口调用等工程实践方法,在合规前提下最大化利用免费翻译资源。

weixin_29038303的博客 266

Cadence SKILL 语言实战指南:从函数列表到高效自动化脚本

本文是Cadence SKILL语言实战指南,旨在帮助芯片设计工程师从掌握核心函数列表出发,高效构建自动化脚本。文章详细解析了数据处理、数据库访问、流程控制及错误处理四类关键函数,并通过版图层批量修改与参数化单元生成两大实战场景,演示如何将函数组合成解决实际问题的自动化方案,从而显著提升Virtuoso环境下的工作效率。

beta5的博客 706

Java 【力扣876】链表的中间结点

给定一个头结点为head的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 代码如下: /** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(...

爱干饭的猿的博客 442

20.Labview使用子vi进行VI间的数据传递详解(模块化)

子VI(模块化)题主在题注中也提到, 子VI的建立只是为了减少程序的负担,那么我们当使用子VI的时候首先就要明确什么是子VI?什么样的程序可以作为子VI?首先我们来看NI官方给的定义,具体说明如下图所示:题主已经将重点画出来了,在官方的解释中将子VI定义为了模块化,大家可以看到创建模块化子VI的特点在于减少代码重复工作优化了程序的框架结构。把一个代码打包,需要的时候就拎出来让他处理处理,不需要的时候就让它躺在我的列表里就行了也不占用运行空间。那么创建子VI需要需要注意以下几点:①任何一个程序。

关注我,更多技术问题欢迎私聊~ 3516

力扣:876. 链表的中间结点 题解(Java)

题目地址: 题目描述: 例: 解题思路: 代码:

HOOHV的博客 360

MATLAB与ROS联合仿真——实例程序搭建思路

MATLAB与ROS联合仿真——实例程序搭建思路

慕羽★的博客 5229

从一只龙虾到一支团队:OpenClaw 单 Bot 多 Agent 配置实践

单 Bot 多 Agent只有一个对外的聊天入口(飞书 Bot)内部有多个独立的 AI Agent,各司其职主 Agent(总指挥)负责接收任务并分配给子 Agent子 Agent 完成任务后将结果返回给主 Agent角色Agent ID职责使用场景🎯 总指挥main-agent统筹协调,任务分发接收所有用户请求✍️ 笔杆子内容创作公众号、博客、小红书🔬 参谋canmou深度研究竞品分析、市场调研📋 运营官operations运营管理邮件、日历、社交媒体。

Maynor的博客 1082

力扣面试题库之对称二叉树Java实现

废话不多说,直接上题目 解题思路:递归 首先题目说得很清楚了,判断一个二叉树是否堆成就是判断一个是否是镜像对称,在换句话说,就是对二叉树的左边和右边是否可以“对半折叠”。 故采用递归的话,就是先判断根节点是否为空,为空则返回true,不为空的话,判断该二叉树是否对称就变成了判断该节点的左右子数是分对称,返回判断的值即可。 然后又该如何判断左右子树是否对称呢,首先老样子,先判断传入的左右节点是否为空,都为空那就肯定对称,返回true,如果只有一个为空或者是左右节点的数据值不相等则代表不对称,返回false

weixin_45115928的博客 415

Autosar诊断实战系列05-Dcm之0x27加解密服务配置开发详解

UDS 0x27服务实战开发介绍,对解锁尝试次数及delay时间进一步解释。

initiallizer的博客 1994

Java每日一题——> 876. 链表的中间结点

这是LeetCode上的 [876,链表的中间结点],难度为 [简单] 题意 给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例1 输入:[1,2,3,4,5] 输出:此列表中的结点 3 示例2 输入:[1,2,3,4,5,6] 输出:此列表中的结点 4 题解(快慢指针) 思路分析 求链表中间结点需要清楚一下两个问题 当链表为偶数时,按理说是不存在中间结点,但题意要求它只需返回中间链的下一个结点作为中间结点(可以理解为从中间链断开分成两

stormzhuo的博客 7322

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【LeetCode: 876. 链表的中间结点 + 链表】

【LeetCode: 876. 链表的中间结点 + 链表】给你单链表的头结点 head ,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。

Coder_ljw的博客 621

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

力扣_876. 链表的中间结点

力扣_876. 链表的中间结点 给你单链表的头结点 `head` ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。

seabirdssss的博客 601

876. 链表的中间结点

本文介绍了使用快慢指针算法解决「876.链表的中间结点」问题。通过设置两个指针(快指针每次走两步,慢指针每次走一步),当快指针到达链表末尾时,慢指针刚好位于中间位置。这种方法只需一次遍历即可找到中间结点,时间复杂度为O(n),空间复杂度为O(1)。文章详细解析了算法原理、代码实现,并通过示例验证正确性,最后讨论了算法变体和其他应用场景。

mrjieke6的博客 903

leetcode - 876 - 链表的中间结点 -java版

文章目录题目代码 题目 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.val = 3...

lingle1的博客 377

Leetcode876. 链表的中间结点

Leetcode876. 链表的中间结点 题目: 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.val = 3, ans.next.val = 4, ans.next.next.val = 5,

会流泪de鱼的博客 298

Java题目详解——LeetCode876.链表的中间结点

我们设定一个快指针,一个慢指针,当慢指针走一步时,快指针走两步,这样当快指针走到链表尾部时,慢指针正好走到中间结点的位置,这时只需要返回慢指针结点即可。首先,题目要求找到中间结点,那我们首先就会联想到可以求出来总长度,然后通过循环遍历的方式找到1/2总长度的结点,即为中间结点,这里为了便于观看,可以将其写成函数。ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NULL.输入:[1,2,3,4,5]

lil_ghost_的博客 545

力扣---LeetCode876. 链表的中间结点

第六弹 --- 力扣LeetCode每日一题

小沈.的博客 584

力扣 876. 链表的中间结点

给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NU

weixin_44184902的博客 516

【vacation】Java leetcode-876 返回链表中间结点

求的链表中间结点题目描述解题思路实现代码 题目描述 给定一个头结点为 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 该题的意思是:假定链表长度为len,如果链表长度为奇数返回中间位置的结点,链表长度为偶数时候返回len/2位置的结点。这样一说,想必大家理解该题相对容易 给大家两个示例,通过实例再理解下本题: 示例1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是

unstoppable_t的博客 306

Leecode 876. 链表的中间结点

题目描述: 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.val = 3, ans....

子冉冰清的博客 418

【Java 数据结构】链表的中间结点

给你单链表的头结点head,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。

Gao123456fy的博客 600

LeetCode 876. 链表的中间结点(Java)

876. 链表的中间结点 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5]) 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.val = 3...

nuts_and_bolts的博客 294

LeetCode刷题---876. 链表的中间结点(快慢指针)

以上就是今天要讲的内容,一开始做题的时候,由思路受限,只能想到先用循环来找到链表的长度,然后在根据其长度找到中间值,后面看了别人的解法之后,发现一个更有趣的解法(快慢指针),所以就赶紧记录一下这个方法,开阔一下思路。

JMFive的博客 364
上一篇: 链表选择题练习
下一篇: 力扣网-66加一(Java实现)
master_1997
博客等级 码龄9年 6粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值