当前位置: 首页 > news >正文

双指针 -876. 链表的中间结点-leetcode

开始一个专栏,写自己的博客

双指针,也算是作为自己的笔记吧!


双指针从广义上来说,是指用两个变量在线性结构上遍历而解决的问题。狭义上说,

  • 对于数组,指两个变量在数组上相向移动解决的问题;
  • 对于链表,指两个变量在链表上同向移动解决的问题,也称为「快慢指针」问题。

 

题库讨论交流


876. 链表的中间结点 - 力扣(Leetcode)

目录

方法一

方法二.滑动窗口


 

70298652c7d448eea30c31e580419f53.png

 

方法一

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode middleNode(ListNode head) {ListNode p=head;int len=0;while(p!=null){len++;p=p.next;}ListNode list=head;for(int i=0;i<len/2;i++){list=list.next;}return list;}
}

从实例中可以发现,当有五个元素的时候,返回会以第(int)5/2个节点作为头结点;当有六个元素的时候,返回会以6/2个节点作为头结点。

所以,无论链表元素个数是奇数个还是偶数个都一样。

先计算出链表一共有多少个节点,然后将第len/2个节点作为头结点返回即可。

方法二.滑动窗口

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode middleNode(ListNode head) {ListNode fast=head;ListNode slow=head;while(fast!=null&&fast.next!=null){slow=slow.next;fast=fast.next.next;}return slow;}
}

4b41838b2bd340fcaed157496849e87a.png

 

从图中可以看出,当链表节点元素有五个的时候,需要返回的是第三个节点作为头节点,所以最终要返回的是指向第三个结点的那个指针。

在这个有五个节点的链表中,两个指针分别进行了三次移动。

每一次slow指针往后移动一位,fast指针往后移动二位,当fast==null||fast.next==null时,两个指针停止移动,这时,返回slow所指向的节点。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相关文章:

双指针 -876. 链表的中间结点-leetcode

开始一个专栏&#xff0c;写自己的博客 双指针&#xff0c;也算是作为自己的笔记吧&#xff01; 双指针从广义上来说&#xff0c;是指用两个变量在线性结构上遍历而解决的问题。狭义上说&#xff0c; 对于数组&#xff0c;指两个变量在数组上相向移动解决的问题&#xff1b;对…...

Linux之运行级别

文章目录一、指定运行级别基本介绍CentOS7后运行级别说明一、指定运行级别 基本介绍 运行级别说明: 0:关机 1:单用户【找回丢失密码】 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面 6:系统重启 常用运行级别是3和5&#xff0c;也可以…...

python搭建web服务器

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…...

【SpringCloud】SpringCloud Feign详解

目录前言SpringCloud Feign远程服务调用一.远程调用逻辑图二.两个服务的yml配置和访问路径三.使用RestTemplate远程调用四.构建Feign五.自定义Feign配置六.Feign配置日志七.Feign调优八.抽离Feign前言 微服务分解成多个不同的服务&#xff0c;那么多个服务之间怎么调用呢&…...

更改Hive元数据发生的生产事故

今天同事想在hive里用中文做为分区字段。如果用中文做分区字段的话&#xff0c;就需要更改Hive元 数据库。结果发生了生产事故。导致无法删除表和删除分区。记一下。 修改hive元数据库的编码方式为utf后可以支持中文&#xff0c;执行以下语句&#xff1a; alter table PARTITI…...

《Netty》从零开始学netty源码(八)之NioEventLoop.selector

目录java原生的WEPollSelectorImplnetty的SelectionKey容器SelectedSelectionKeySetnetty的SelectedSelectionKeySetSelectorSelectorTupleopenSelector每一个NioEventLoop配一个选择器Selector&#xff0c;在创建NioEventLoop的构造函数中会调用其自身方法openSelector获取sel…...

TCP UDP详解

文章目录TCP UDP协议1. 概述2. 端口号 复用 分用3. TCP3.1 TCP首部格式3.2 建立连接-三次握手3.3 释放连接-四次挥手3.4 TCP流量控制3.5 TCP拥塞控制3.6 TCP可靠传输的实现3.7 TCP超时重传4. UDP5.TCP与UDP的区别TCP UDP协议 1. 概述 TCP、UDP协议是TCP/IP体系结构传输层中的…...

超详细淘宝小程序的接入开发步骤

本文是向大家介绍的关于工作中遇到的如何对接淘宝小程序开发的步骤&#xff0c;它能够帮助大家省略在和淘宝侧对接沟通过程中的一些繁琐问题&#xff0c;便捷大家直接快速开展工作~~一、步骤演示1、首先我们打开淘宝开放平台&#xff0c;进入控制台2、进入控制台后&#xff0c;…...

【Python】正则表达式re库

文章目录函数re.match函数re.search函数re.findall函数re.compile函数re.sub函数re.split函数修饰符正则表达式模式正则表达式实例函数 re.match函数 re.match()函数用于尝试从字符串的 起始位置 匹配一个模式&#xff0c;匹配成功返回一个匹配对象&#xff0c;否则返回None。…...

JDK8使用Visual VM根据Dump文件排查OutOfMemoryError生产问题思路

文章目录1. 前言2. 堆内存溢出3. GC执行异常4. 元空间内存溢出5. 创建线程异常6. 内存交换问题7. 数组长度过大8. 系统误杀异常1. 前言 当系统异常产生了dump文件需要我们对其进行排查时&#xff0c;其本质上考验的是我们对于Java运行时内存结构的知识掌握是否牢固以及对业务代…...

2023年网络安全比赛--网络安全事件响应中职组(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.找出黑客植入到系统中的二进制木马程序,并将木马程序的名称作为Flag值(若存在多个提交时使用英文逗号隔开,例如bin,sbin,…)提交; 2.找出被黑客修改的系统默认指令,并将被修改的指令里最后一个单词作为Flag值提交; 3.找出…...

【半监督学习】3、PseCo | FPN 错位对齐的高效半监督目标检测器

文章目录一、背景二、方法2.1 基础框架结构2.2 带噪声的伪边界框学习2.3 多视图尺度不变性学习三、实验论文&#xff1a;PseCo: Pseudo Labeling and Consistency Training for Semi-Supervised Object Detection 代码&#xff1a;https://github.com/ligang-cs/PseCo 出处&a…...

Tomcat+Servlet初识

文章目录Tomcat什么是TomcatTomcat的安装启动tomcat静态页面的访问动态页面的访问一个Servlet程序的部署流程Tomcat 什么是Tomcat Tomcat是一个HTTP服务器&#xff0c;在开发或调试Servlet代码时应用广泛&#xff1b;使用Tomcat&#xff0c;实际就是将用户浏览器输入的http请…...

ChatGPT-4 终于来了(文末附免费体验地址)

大家好&#xff0c;我是小钱学长。 ChatGPT4.0 重磅来袭&#xff0c;今天一打开plus页面出现的就是这个GPT-4的体验界面&#xff01;现在就带大家一起看看GPT4.0​。 进入之后是这样的 看到最下面有一行话&#xff0c;目前应该是4个小时限制100条消息。 GPT-4有什么优势&…...

【C++学习】类和对象(中)一招带你彻底了解六大默认成员函数

前言&#xff1a;在之前&#xff0c;我们对类和对象的上篇进行了讲解&#xff0c;今天我们我将给大家带来的是类和对象中篇的学习&#xff0c;继续深入探讨【C】中类和对象的相关知识&#xff01;&#xff01;&#xff01; 目录 1. 类的6个默认成员函数 2. 构造函数 2.1概念介…...

面试——Java基础

说一说你对Java访问权限的了解 在修饰成员变量/成员方法时&#xff0c;该成员的四种访问权限的含义如下&#xff1a; private&#xff1a;该成员可以被该类内部成员访问&#xff1b; default&#xff1a;该成员可以被该类内部成员访问&#xff0c;也可以被同一包下其他的类访…...

JavaWeb——Request(请求)和Response(响应)介绍

在写servlet时需要实现5个方法&#xff0c;在一个service方法里面有两个参数request和response。 浏览器向服务器发送请求会发送HTTP的请求数据——字符串&#xff0c;这些字符串会被Tomcat所解析&#xff0c;然后这些请求数据会被放到一个对象(request)里面保存。 相应的Tom…...

JMeter压测文件上传接口和中文乱码

一、压测文件上传接口 新建测试计划&#xff0c;然后添加需要的元件。 1、添加HTTP信息头管理器 可以在测试计划中添加&#xff0c;也可以在线程组里面添加。 我的接口使用到 token信息。这里在测试计划中添加。 2、添加线程组 上图解释&#xff1a;会在 2秒钟之内启动起来 5…...

CSRF漏洞复现

目录标题原理如何实现和xss区别危害CSRF实战&#xff08;pikachu&#xff09;dvwa靶场CSRF&#xff08;Cross Site Request Forgery&#xff09;。跨站请求伪造原理 攻击者会伪造一个请求&#xff08;一般是一个链接&#xff09;&#xff0c;然后让用户去点击&#xff0c;然后…...

Google Colab导入GitHub python项目进行运行

本文介绍包含 ipynb后缀文件的github项目&#xff0c;导入到GitHub上进行运行的方法。 导入项目 Colab是需要梯子的。 访问网址&#xff1a;https://colab.research.google.com 输入github网之后回车&#xff0c;下面的内容是从github上自动获取的。 选择项目要打开的ipynb文…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

Spring事务传播机制有哪些?

导语&#xff1a; Spring事务传播机制是后端面试中的必考知识点&#xff0c;特别容易出现在“项目细节挖掘”阶段。面试官通过它来判断你是否真正理解事务控制的本质与异常传播机制。本文将从实战与源码角度出发&#xff0c;全面剖析Spring事务传播机制&#xff0c;帮助你答得有…...

比较数据迁移后MySQL数据库和ClickHouse数据仓库中的表

设计一个MySQL数据库和Clickhouse数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

奈飞工厂官网,国内Netflix影视在线看|中文网页电脑版入口

奈飞工厂是一个专注于提供免费Netflix影视资源的在线播放平台&#xff0c;致力于为国内用户提供的Netflix热门影视内容。该平台的资源与Netflix官网基本同步&#xff0c;涵盖电影、电视剧、动漫和综艺等多个领域。奈飞工厂的界面简洁流畅&#xff0c;资源分类清晰&#xff0c;方…...

添加按钮跳转页面并且根据网站的用户状态判断是否显示按钮

现在我们需要的是为页面添加一个按钮&#xff0c;这个按钮是动态的&#xff0c;需要根据网站用户登录过后是否是vip来判断是否显示&#xff0c;然后按钮的效果是跳转到某个页面。 首先我们需要在页面中找到我们需要添加按钮的位置&#xff0c;找到对应的文件&#xff0c;然后比…...

基于单片机的病房呼叫系统(源码+仿真)

该系统由以 STM32F4 为平台的监控终端以及以 CC2530 为平台的无线传感网组成。系统上电后自动完成 ZigBee 网络的组建、终端节点的加入&#xff0c;病人可利用便携式的病人终端发出呼叫求助请求信息、节点在线信息以及对护士的服务评价信息等&#xff0c;这些信息通过路由节点发…...