yub‘s Algorithmic Adventures_Day7

news2024/12/23 9:54:52
环形链表

link:https://leetcode.cn/problems/linked-list-cycle-ii/description/

思路分析

我只能说双指针yyds【刻板hh】
我们分两种情况来分析

image-20241008235621325
起码在第二圈才会相遇 fast比slow多走环的整数倍

fast 走的步数是 slow 步数的 2 倍,即 f=2s;
fast 比 slow 多走了 n 个环的长度,即 f=s+nb;( 解析: 双指针都走过 a 步,然后在环内绕圈直到重合,重合时 fast 比 slow 多走 环的长度整数倍 )
将以上两式相减得到 f=2nb,s=nb,即 fast 和 slow 指针分别走了 2n,n 个环的周长

我们通过画图分析可得 当fast走到头节点位置时 再和slow一起前进时两者会在链表环入口节点处相遇 那么此时我们再将fast至于head位置即可.
有环
fast指针始终比slow指针多走一步 在有环的情况下必定会相遇 【每轮循环fast都靠近slow一步】
第一种结果:
如果链表存在环,则双指针一定会相遇。因为每走 1 轮,fast 与 slow 的间距 +1,fast 一定会追上 slow

第二种结果: 当fast == slow时, 两指针在环中第一次相遇

无环
fast 指针走过链表末端,说明链表无环,此时直接返回 null

ublic class Solution {
    public ListNode detectCycle(ListNode head) {
        ListNode fast = head;
        ListNode slow = head;
        while(true) {
            //判断是否为空/单节点
            if(fast == null || fast.next == null) return null;
            fast = fast.next.next;
            slow = slow.next;
            if(slow == fast) break;
        }
        //指针第二次相遇 重新使得fast指向头节点
        fast = head;
        while(slow != fast) {
            slow = slow.next;
            fast = fast.next;
        }
        return fast;
    }
}
Tips

链表类题目一般都是用双指针解决.【比如寻找距离尾部第N哥节点 寻找环入口 寻找公共尾部入口等】

有效的字母异位词

link:https://leetcode.cn/problems/valid-anagram/description/

思路分析

最开始分析的时候暴力找规则看的脑袋大 明明可以使用数组+记录解决.【数组其实就是一个简单的哈希表】

因为字符a到字符z的ASCII是26个连续的数值,所以字符a映射为下标0,相应的字符z映射为下标25record数组如果有的元素不为零0,说明字符串s和t一定是谁多了字符或者谁少了字符,return false

class Solution {
    public boolean isAnagram(String s, String t) {
        int[] arr = new int[26];
        for(char c : s.toCharArray()) {
            arr[c - 'a'] += 1;
        }
        for(char c : t.toCharArray()) {
            arr[c - 'a'] -= 1;
        }
        for(int i : arr) {
            if(i != 0) {
                return false;
            }
        }
        return true;
    }
}
Tips

给了小范围字符集可以考虑数组【简易的哈希表】
toCharArray()方法将字符串转换成字符数组.

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

5.资源《Arduino UNO R3 proteus 使用CD4511驱动数码管工程文件(含驱动代码)》说明。

资源链接: Arduino UNO R3 proteus 使用CD4511驱动数码管工程文件(含驱动代码) 1.文件明细: 2.文件内容说明 包含:proteus工程,内含设计图和工程代码。 3.内容展示 4.简述 工程功能可以看这个视频 数码…

微信小程序流量主

开发小程序也已经有一段时间了,也是为了添加流量主来开发小程序,根据小程序的定位,来获取用户想要的资源,通过广告的形式来增加用户的点击量进行收益,收益虽然微不足道,但是也是很有成就感的

活动邀请 | SonarQube×创实信息即将亮相2024 GOPS全球运维大会-上海站,分享代码质量与安全提升策略

2024年10月18日-19日(周五-周六),第二十四届 GOPS 全球运维大会上海站将在上海中庚聚龙酒店举办。 大会为期2天,侧重大模型、DevOps、SRE、AIOps、BizDevOps、云原生及安全等热门技术领域。特设了如大模型 运维/研发测试、银行/…

宠物咖啡馆服务平台:SpringBoot技术深度解析

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理基于Spring Boot的宠物咖啡馆平台的设计与…

2024_10_8 系统进展

改进位置 发现是label_api里藏了我需要改进的东西 settings.py 数据库 我这边电脑上使用的是windows 192 vue.config.js 陈家强是这样设置的 module.exports {publicPath: process.env.NODE_ENV production? /: /,assetsDir: static,// css: {// extract: false// },…

使用XML实现MyBatis的基础操作

目录 前言 1.准备工作 1.1⽂件配置 1.2添加 mapper 接⼝ 2.增删改查操作 2.1增(Insert) 2.2删(Delete) 2.3改(Update) 2.4查(Select) 前言 接下来我们会使用的数据表如下: 对应的实体类为:UserInfoMapper 所有的准备工作都在如下文章。 MyBati…

《大规模语言模型从理论到实践》第一轮学习--Fine-tuning微调

第一轮学习目标:了解大模型理论体系 第二轮学习目标:进行具体实操进一步深入理解大模型 从大语言模型的训练过程来理解微调 大预言模型训练主要包含四个阶段:预训练、有监督微调、奖励建模、强化学习。 预训练(Pretraining&…

[paddle]paddleseg快速开始

快速开始 为了让大家快速了解PaddleSeg,本文档使用一个简单示例进行演示。在实际业务中,建议大家根据实际情况进行调整适配。 在开始下面示例之前,请大家确保已经安装好PaddleSeg开发环境(安装说明)。 1 准备数据 …

被AI坑的一天—CentOS7导入阿里云YUM源报错的 GPG密钥提示404

过于相信人工智能 配置YUM源根据AI的说法换阿里云的YUM源验证AI配置结果解决问题 配置YUM源 由于电脑受限制 , 不能访问境外网站,所以用不了centos自带的源 ,是报404的 根据AI的说法换阿里云的YUM源 编辑 /etc/yum.repos.d/CentOS-Base.repo ,更换为 配置完成后sudo yum …

nacos多数据源插件介绍以及使用

概述 在微服务架构中,服务配置的集中管理和动态调整是至关重要的。Nacos 提供了配置管理和服务发现的功能,其中配置管理支持动态数据源的切换,增强了其在复杂环境中的适用性。默认情况下,Nacos 支持 MySQL 和Derby,但…

C++——AVL树的模拟实现

目录 一、AVL树结点 二、AVL树结构 三、插入数据(重点) 1、右单旋 2、左单旋 3、左右双旋 4、右左双旋 AVL树是一颗平衡二叉搜索树,它的本质就是一颗之前说过的二叉搜索树。但是二叉搜索树可能会出现极端情况,导致二叉搜索树变…

不同时期的USB接口

Type-A Type-A接口最早于USB1.0标准(1996)推出,拥有四个引脚:VBUS提供5V电源,D-和D用于数据传输,GND接地。 Type-B Type-B接口最早于USB1.0标准(1996)推出,拥有四个引脚:VBUS提供5V电源,D-和D用…

QD1-P7 HTML常用标签:div和span

本节学习&#xff1a;div 和 span 标签。 本节视频 www.bilibili.com/video/BV1n64y1U7oj?p7 ‍ 一、div 标签 用途 ​<div>​ 标签在 HTML 中是一个通用 容器 &#xff0c;用于将 HTML 文档中的内容分组并在文档中划分区域。<div> ​元素本身不具有特定的含…

道路积水检测数据集 1450张 路面积水 带分割 voc yolo

道路积水检测数据集 1450张 路面积水 带分割 voc yolo 分类名: (图片张数&#xff0c; 标注个数) puddle:(1468,1994) 总数:(1468&#xff0c;1994) 总类(nc): 1类 道路积水检测数据集介绍 项目名称 道路积水检测数据集 项目概述 本数据集包含1450张带有标注的图像&#x…

【ubuntu】ubuntu20.04安装cuda12.6与显卡驱动

目录 1.安装cuda12.6 2.安装显卡驱动 1.安装cuda12.6 https://developer.nvidia.com/cuda-toolkit-archive https://developer.nvidia.com/cuda-12-6-0-download-archive?target_osLinux&target_archx86_64&DistributionUbuntu&target_version20.04&target_…

记一次 stm32f407 无法进入 standby 问题

记一次 stm32f407 无法进入 standby 问题 通过查看当前中断信息,发现是 systick 中断pending未处理导致进入standby 模式的 WFI 失败,所以需要在执行 WFI 之前清除 systick 中断pending标志. 查看<Cortex M3与M4权威指南>如下: 可知ICSR寄存器的bit 26表示systick中断是…

RadioGroup RadioButton底部导航栏

参考: https://blog.csdn.net/lu202032/article/details/117632709 activity_home.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://sch…

八大排序--07归并排序

假设数组 arr[] {5,7,4,2,0,1,6},请通过插入排序的方式&#xff0c;实现从小到大排列&#xff1a; 方法&#xff1a;先拆分&#xff0c;再合并&#xff0c;并在合并过程中结束临时空间进行排序&#xff1b; 拆分&#xff1a;从待排序列中间位置拆开&#xff0c;数据分成左右两…

windows C++-创建图像处理的异步消息(二)

创建图像处理网络 此部分介绍如何创建对给定目录中的每个 JPEG (.jpg) 图像执行图像处理的异步消息块网络。 网络执行以下图像处理操作&#xff1a; 对于 Tom 创作的任何图像&#xff0c;转换为灰度。 对于任何以红色作为主色的图像&#xff0c;移除绿色和蓝色分量&#xff0…

MCU 移值FreeRTOS:【图文+源代码】

1&#xff1a;裸机程序执行 在裸机程序中&#xff0c;对于简单的方式&#xff0c;经常采用查询方式&#xff0c;即一件事完成后&#xff0c;再去完成另一件事&#xff0c;按照顺序执行&#xff0c;这种执行导致当有紧急情况时&#xff0c;可能会得不到处理。对于更复杂的程序&…