华为od面试手撕代码真题题型4——链表

链表

1 单链表相交

160. 相交链表 - 力扣(LeetCode)

解法一 指针 pA 指向 A 链表,指针 pB 指向 B 链表,依次往后遍历。如果 pA 到了末尾,则 pA = headB 继续遍历、如果 pB 到了末尾,则 pB = headA 继续遍历。如此 长度差就消除了

    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode p = headA;ListNode q = headB;while(p != q){if (p == null) {p = headB;}else{p = p.next;}if (q == null){q = headA;}else{q = q.next;}}return p == null ? null : p;}

解法二 先得到headA,headB的长度,让长的先走长度差的单位,然后再一起走并判断节点是否相同。

public ListNode getIntersectionNode(ListNode headA, ListNode headB) {if (headA == null || headB == null) return null;ListNode p = headA;ListNode q = headB;int lenA = 0;int lenB = 0;//获取链表长度while (p != null){p = p.next;lenA ++;}while (q != null){q = q.next;lenB ++;}//p,q重新指向链表头p = headA;q = headB;if (lenA >= lenB){int n = lenA -lenB;while (n -- > 0){ //让p先走n步p = p.next;}}else {int n = lenB -lenA;while (n -- > 0){ //让q先走n步q = q.next;}}//然后一起走while (p != null && q != null){if (p == q) return p;p = p.next;q = q.next;}return null;}

2 判断链表是否有环

思路:双指针

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

141. 环形链表 - 力扣(LeetCode)

142. 环形链表 II - 力扣(LeetCode)

876 题解

 public ListNode middleNode(ListNode head) {ListNode slow = head;ListNode fast = head;//fast != null && fast.next != null 最后slow指的就是中点(偶数的话中偏右)while (fast != null && fast.next != null){slow = slow.next;fast = fast.next.next;}return slow;}

141 题解

 public boolean hasCycle(ListNode head) {ListNode slow = head;ListNode fast = head;while (fast != null && fast.next != null){slow = slow.next;fast = fast.next.next;if (slow == fast) return true;}return false;}

142题解

public ListNode detectCycle(ListNode head) {ListNode slow = head;ListNode fast = head;while (fast != null && fast.next != null){slow = slow.next;fast = fast.next.next;if (slow == fast){ //达到相交点后 head到环头的长度等于快慢指针相交点到环头的距离while (head != slow){head = head.next;slow = slow.next;}return slow;}}return null;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/453829.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拥抱“新市民” ,数字银行的“谋与变”

【潮汐商业评论/原创】 数字银行,既是金融行业的创新物种,其在发展的过程中也彰显着普惠金融的基因。 “我劝你买点银行理财吧,选一家靠谱的银行就是最靠谱的理财方式了,踏踏实实地把钱存银行里面不会有问题的”,周日…

SpringBoot篇(二、制作SpringBoot程序)

目录 一、代码位置 二、四种方式 1. IDEA联网版 2. 官网 3. 阿里云 4. 手动 五、在IDEA中隐藏指定文件/文件夹 六、复制工程-快速操作 七、更改引导类别名 一、代码位置 二、四种方式 1. IDEA联网版 2. 官网 官网制作:Spring Boot 3. 阿里云 阿里云版制…

react18中的计算属性及useMemo的性能优化技巧

react18里面的计算属性和使用useMemo来提升组件性能的方法 计算属性 实现效果 代码实现 函数式组件极简洁的实现,就这样 import { useState } from "react"; function FullName() {const [firstName, setFirstName] useState("");const [la…

AlDente Pro for Mac电脑 充电限制保护工具 安装教程【简单,轻松上手】

Mac分享吧 文章目录 AlDente Pro for Mac 充电限制保护工具 安装完成,软件打开效果一、AlDente Pro for Mac 充电限制保护工具 Mac电脑版——v1.28.41️⃣:下载软件2️⃣:安装软件,将安装包从左侧拖入右侧文件夹中,等…

c++初阶--string类(使用)

大家好,许久不见,今天我们来学习c中的string类,在这一部分,我们首先应该学习一下string类的用法,然后再试着自己去实现一下string类。 在这里,我使用的是这个网站来查找的string类,这里面的内容…

Web,RESTful API 在微服务中的作用是什么?

大家好,我是锋哥。今天分享关于【Web,RESTful API 在微服务中的作用是什么?】面试题?希望对大家有帮助; Web,RESTful API 在微服务中的作用是什么? 在微服务架构中,Web 和 RESTful …

react18中如何实现同步的setState来实现所见即所得的效果

在react项目中,实现添加列表项,最后一项自动显示在可视区域范围!! 实现效果 代码实现 import { useState, useRef } from "react"; import { flushSync } from "react-dom"; function FlushSyncRef() {con…

基于SSM网络在线考试系统的设计

管理员账户功能包括:系统首页,个人中心,学生管理,在线考试管理,试题管理,考试管理,系统管理 前台账号功能包括:系统首页,个人中心,在线考试,公告信…

word删除空白页 | 亲测有效

想要删掉word里面的末尾空白页,但是按了delete之后也没有用 找了很久找到了以下亲测有效的方法 1. 通过鼠标右键在要删除的空白页面处显示段落标记 2. 在字号输入01,按ENTER(回车键) 3.成功删除了!!

ECharts饼图-饼图34,附视频讲解与代码下载

引言: 在数据可视化的世界里,ECharts凭借其丰富的图表类型和强大的配置能力,成为了众多开发者的首选。今天,我将带大家一起实现一个饼图图表,通过该图表我们可以直观地展示和分析数据。此外,我还将提供详…

模型实战(27)之 YOLO11 推理、验证及训练自己的数据集

模型实战(27)之 YOLO11推理、验证及训练自己的数据集 2024年10.17,YOLO11是近期十月份刚经ultralytics团队更新优化发布的视觉算法深度学习网络模型,其网络模型结构代码实现也采用了比较新的Python数据结构,所以虚拟环境搭建安装包也比较新,经过多次踩坑,把关键环节记录…

电子便签:从偶像剧到职场的实用转变

在快节奏的现代生活中,便签已经成为了我们不可或缺的助手,无论是纸质的还是电子的,它们都以小巧的“身躯”承载着我们的日常记忆和待办事项。从偶像剧中常见的“便利贴”女孩形象,到如今电子便签的普及,它们帮助我们捕…

百度搜索竞价推广有必要做吗?怎么做效果好!

百度竞价推广,有的行业适合,有的行业则不行,下面我给大家分享下哪些行业可以。 如果是招商加盟、招代理商、招经销商,或者是高客单价咨询服务费,甚至是找合作方、渠道方的企业主都可以投放竞价推广。 总之一句话&…

网络安全的五大误区,你中招了吗?

在数字化时代,网络安全问题日益突出,许多人在使用网络过程中存在一些误区,导致个人信息泄露、财产损失等问题。本文将为您揭示网络安全的五大误区,帮助您提高安全防范意识。 误区一:使用复杂密码就一定安全 许多人认为…

基于SpringBoot+Vue+uniapp微信小程序的垃圾分类系统的详细设计和实现(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

万户ezEIP企业管理系统 productlist.aspx SQL注入漏洞复现

0x01 产品简介 万户ezEIP是一种企业资源规划软件,旨在帮助企业管理其各个方面的业务流程。它提供了一套集成的解决方案,涵盖了财务、供应链管理、销售和市场营销、人力资源等各个领域。 0x02 漏洞概述 万户ezEIP企业管理系统 productlist.aspx 接口存在SQL注入漏洞,未经身…

11_原始值的响应式方案-ref

目录 引入 ref解决响应丢失的问题自动脱 ref 引入 ref 在之前实现的 reactive 方法,其代理的目标必须是一个非原始值才行,例如: let str vue // 无法拦截 str 的修改 str vue3上述这个例子表达的意思就是,我们还缺少一个能够对…

ZYNQ:流水灯实验

实验目的 PL_LED0 和 PL_LED1 连接到 ZYNQ 的 PL 端,PL_LED0 和 PL_LED1循环往复产生流水灯的效果,流水间隔时间为 0.5s。 原理图 程序设计 本次实验是需要实现两个LED的循环熄灭点亮,时间间隔是0.5S,对时间间隔的控制使用计数器来完成。本…

第十九课:Python学习之继承

继承 目标 单继承多继承 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中继承 实现代码的重用,相同的代码不需要重复的编写多态 不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活度 01. 单继承 …

安装buildkit,并使用buildkit构建containerd镜像

背景 因为K8s抛弃Docker了,所以就只装了个containerd,这样就需要一个单独的镜像构建工具了,就用了buildkit,这也是Docker公司扶持的,他们公司的人出来搞的开源工具,官网在 https://github.com/moby/buildkit 简介 服务端为buildkitd,负责和runc或containerd后端连接干活,目前…