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

2024-02-21 算法: 测试链表是否有环


点击 <C 语言编程核心突破> 快速C语言入门


算法: 测试链表是否有环

  • 前言
  • 一、双指针 ( 快慢指针 )
  • 二、代码
  • 总结


前言

要解决问题: 一道简单的算法题, 测试链表是否含有环.

想到的思路: 哈希表, 将链表指针强制转换为整型, 利用求余法建立哈希函数. 太复杂, 内存效率不高, 经题解发现可用双指针, 即快慢指针法.

其它的补充: 简单算法题, 未看题解没做出来, 脑袋跟不上了.


一、双指针 ( 快慢指针 )

快慢指针, 就是用两个链表节点指针, 快指针每循环一次前进一个, 慢指针每循环两次前进一个, 如果有环, 快指针会套圈慢指针, 此时两指针相等, 如果没有环, 快指针会遍历完成, 并结束.

a
b slow
c
d fast
e

二、代码

#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>typedef struct ListNode
{int val;struct ListNode *next;
} ListNode;bool hasCycle(ListNode *head)
{if (!head){return false;}ListNode *slow = head;int num = 0;head = head->next;num++;while (head){if (head == slow){return true;}head = head->next;num++;if (num % 2 == 0){slow = slow->next;}}return false;
}

总结

只要有思路, 其实很简单, 没有思路, 则比较难.


点击 <C 语言编程核心突破> 快速C语言入门


相关文章:

2024-02-21 算法: 测试链表是否有环

点击 <C 语言编程核心突破> 快速C语言入门 算法: 测试链表是否有环 前言一、双指针 ( 快慢指针 )二、代码总结 前言 要解决问题: 一道简单的算法题, 测试链表是否含有环. 想到的思路: 哈希表, 将链表指针强制转换为整型, 利用求余法建立哈希函数. 太复杂, 内存效率不高…...

http协议工具:apache详解

目录 一、常见的http服务程序 1、 Apache HTTP Server 介绍 1.1 apache 概念 1.2 apache 功能 1.3 apache 特性 2、MPM&#xff08;multi-processing module&#xff09;工作模式 2.1 prefork 2.2 worker 2.3 event 二、Apache HTTP Server安装和相关文件 1、安装方…...

我的NPI项目之Android Camera (二) -- 核心部件之 Camera Sensor

说到Camera模组&#xff0c;我们比较关心的是用的什么样的sensor&#xff1f; sensor的分辨率多少&#xff0c;sensor的像素多大&#xff0c;sensor是哪家生产的等等一些问题。今天&#xff0c;我们就穿越时间&#xff0c;将sensor的历史扒一扒。 Wikipedia先看一下&#xff1…...

【四】3D Object Model之测量Features——get_object_model_3d_params()算子

&#x1f60a;&#x1f60a;&#x1f60a;欢迎来到本博客&#x1f60a;&#x1f60a;&#x1f60a; &#x1f31f;&#x1f31f;&#x1f31f; Halcon算子太多&#xff0c;学习查找都没有系统的学习查找路径&#xff0c;本专栏主要分享Halcon各类算子含义及用法&#xff0c;有…...

C++学习Day09之系统标准异常

目录 一、程序及输出1.1 系统标准异常示例1.2 标准异常表格 二、分析与总结 一、程序及输出 1.1 系统标准异常示例 #include<iostream> using namespace std; #include <stdexcept> // std 标准 except 异常class Person { public:Person(int age){if (age <…...

企业计算机服务器中了crypt勒索病毒怎么办,crypt勒索病毒解密数据恢复

计算机服务器设备为企业的生产运营提供了极大便利&#xff0c;企业的重要核心数据大多都存储在计算机服务器中&#xff0c;保护企业计算机服务器免遭勒索病毒攻击&#xff0c;是一项艰巨的工作任务。但即便很多企业都做好的了安全运维工作&#xff0c;依旧免不了被勒索病毒攻击…...

npm详解:掌握package.json配置

package.json 文件中的 scripts 配置允许你定义一系列脚本命令&#xff0c;这些命令可以通过 npm run <script-name> 来执行。下面是一些常见的 scripts 配置&#xff0c;以及它们的详解和举例。 常见的 scripts 配置 start 这是最常用的脚本&#xff0c;通常用于启动应…...

Git基础操作

1、git 基础命令 //克隆远端仓库 git clone http://dddddd.git //初始化仓库 git init //查看状态 git status //添加所有文件到缓存区 git add . //查看版本日志 git reflog //将更新提交到本地仓库 git commit -m "日志摘要" //将当前版本回退到某个版本 git rese…...

怎么卸载Nvidia显卡驱动

在Ubuntu 22.04上卸载Nvidia显卡驱动并手动重新安装的步骤可以分为几个主要部分。请确保在执行这些步骤之前&#xff0c;你已经备份了重要的数据&#xff0c;以防出现任何问题。 卸载当前的Nvidia驱动 打开终端&#xff1a;你可以通过按CtrlAltT快捷键来打开终端。 查找安装的…...

JS进阶——解构赋值

数组解构 基本&#xff1a; let [a, b, c] [1, 2, 3]; // a 1 // b 2 // c 3 可嵌套 let [a, [[b], c]] [1, [[2], 3]]; // a 1 // b 2 // c 3 可忽略 let [a, , b] [1, 2, 3]; // a 1 // b 3 不完全解构 let [a 1, b] []; // a 1, b undefined 剩余运…...

[Flask]SSTI1 buuctf

声明&#xff1a;本篇文章csdn要我一天发两篇所以我来水的 跟ssti注入的详细知识我这里写了 https://blog.csdn.net/weixin_74790320/article/details/136154130 上面链接我复现了vulhub的SSTI&#xff0c;其实本质上是一道题 然后我们就用{{.__class__}}看类的类型&#xf…...

k8s学习整理文档

整理文档 ‍ ‍ 实验环境 服务器 最低配置要求: 2 核虚拟 CPU4 GB 内存20 GB 储存空间X 4 台 (三台集群,一台镜像仓库服务器) 网络环境 由于搭建网络需要,同时要让各个主机互通,因此这里需要对云服务器设置专门的网络(同时也需要开放服务器对应的公网 IP) 在云…...

git----->git pull和git fetch区别

git pull 和 git fetch 是 Git 中两个常用的命令&#xff0c;它们都用于从远程仓库获取最新的内容。然而&#xff0c;它们的行为有所不同&#xff1a; git fetch: git fetch 命令用于从远程仓库获取最新的历史记录和数据&#xff0c;但它不会自动合并或修改你当前的工作。它只是…...

如何使用Docker部署MongoDB并结合内网穿透实现远程访问本地数据库

文章目录 前言1. 安装Docker2. 使用Docker拉取MongoDB镜像3. 创建并启动MongoDB容器4. 本地连接测试5. 公网远程访问本地MongoDB容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 …...

适用于 Windows 的 12 个最佳 PDF 编辑器

PDF文档的普遍存在按理说&#xff0c;PDF文档的可读性和可移植性受到专业文档的青睐。 然而&#xff0c;PDF格式的可食用性是一大缺陷。幸运的是&#xff0c;各种 PDF 编辑工具和软件使 PDF 的编辑变得更加容易&#xff0c;这篇文章旨在帮助我们的读者找到其中最好的工具和软件…...

C++面试:SQL注入、web shell攻击的危害和规避方法

目录 SQL注入 工作原理 危害 规避方法 示例背景 Web Shell攻击 工作原理 危害 规避方法 SQL注入和Web Shell攻击是两种常见的网络安全威胁&#xff0c;它们可以对系统造成严重的危害。了解它们的工作原理、危害以及如何规避是网络安全防护的基本要求。下面将详细介绍这…...

计算机网络基础之计算机网络组成与分类

计算机网络基础 计算机网络是计算机技术与通信技术发展相结合的产物&#xff0c;并在用户需求的促进下得到进一步的发展。通信技术为计算机之间的数据传输和交换提供了必需的手段&#xff0c;而计算机技术又渗透到了通信领域&#xff0c;提高了通信网络的性能。 计算机网络的…...

怎么使用Git进行版本恢复

场景 在实际工作过程中&#xff0c;有时候会出现以下问题&#xff1a; 1.在使用git对代码进行远程仓库托管时&#xff0c;会出现误操作&#xff0c;怎么恢复上一个版本或指定历史版本&#xff1f; 2.git 误操作&#xff0c;将代码提交到 master 主分支&#xff0c;怎么恢复 …...

三防平板电脑丨亿道工业三防平板丨三防平板定制丨机场维修应用

随着全球航空交通的增长和机场运营的扩展&#xff0c;机场维护的重要性日益凸显。为确保机场设施的安全和顺畅运行&#xff0c;采取适当的措施来加强机场维护至关重要。其中&#xff0c;三防平板是一种有效的工具&#xff0c;它可以提供持久耐用的表面保护&#xff0c;使机场维…...

基于深度学习的红肉新鲜过期判决系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 系统构成与流程 4.2 模型训练与优化 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ...............................................…...

手把手教你用MP1470芯片设计一个12V转5V的DCDC降压模块(附完整原理图与PCB布局避坑指南)

手把手教你用MP1470芯片设计一个12V转5V的DCDC降压模块&#xff08;附完整原理图与PCB布局避坑指南&#xff09; 在嵌入式系统开发中&#xff0c;稳定可靠的电源设计往往是项目成功的关键前提。当我们需要为STM32、ESP32等微控制器或各类传感器供电时&#xff0c;如何将常见的1…...

Gregwar/Captcha图像效果详解:扭曲、线条、背景与透明度的艺术

Gregwar/Captcha图像效果详解&#xff1a;扭曲、线条、背景与透明度的艺术 【免费下载链接】Captcha PHP Captcha library 项目地址: https://gitcode.com/gh_mirrors/capt/Captcha 在PHP验证码开发中&#xff0c;Gregwar/Captcha库以其出色的图像效果和安全性能脱颖而出…...

白介素-5(IL-5)的结构、功能及医学应用研究进展

摘要白介素-5&#xff08;Interleukin-5&#xff0c;IL-5&#xff09;是一种由Th2细胞、嗜酸性粒细胞祖细胞等免疫细胞分泌的多功能细胞因子&#xff0c;在调节免疫反应、尤其是嗜酸性粒细胞&#xff08;Eosinophil, EOS&#xff09;的分化、存活及功能活化中发挥核心作用。自1…...

Kafka-UI:3分钟快速上手,轻松管理你的Apache Kafka集群

Kafka-UI&#xff1a;3分钟快速上手&#xff0c;轻松管理你的Apache Kafka集群 【免费下载链接】kafka-ui Open-Source Web UI for managing Apache Kafka clusters 项目地址: https://gitcode.com/gh_mirrors/kaf/kafka-ui 你是否曾经为管理Apache Kafka集群而头疼&…...

从防御者视角看Fastjson 1.2.24漏洞:如何用Docker+vulhub快速搭建靶场并验证修复方案

防御视角下的Fastjson 1.2.24漏洞实战&#xff1a;Docker靶场搭建与修复方案验证 在当今的软件开发中&#xff0c;JSON处理库的安全性问题日益凸显。作为Java生态中最流行的JSON库之一&#xff0c;Fastjson因其高性能而广受欢迎&#xff0c;但同时也因其历史漏洞频发而备受关注…...

本地视频怎么去水印?2026年实测去水印方法和软件推荐指南

为什么本地视频需要去水印 无论是从社交平台保存下来的视频&#xff0c;还是朋友转发的素材&#xff0c;视频上的水印往往会影响观看体验。特别是对于内容创作者而言&#xff0c;需要将多个平台的素材进行二次创作时&#xff0c;去除水印成了必不可少的环节。本地视频去水印不仅…...

90%的人只用了Superpowers 10%的能力,实战案例带你走通全流程

装了Superpowers还是不会用&#xff1f;这套完整工作流&#xff0c;让你的AI从“工具”变“搭档”你可能已经在 GitHub 上给 Superpowers 点过 Star 了&#xff0c;甚至在本地环境里跑了一遍安装流程。但说实话&#xff0c;你大概率只触发了其中一两个 Skill——写代码时偶尔触…...

告别Modelsim命令行!用Notepad++插件NppExec一键检查Verilog语法(附详细配置命令)

硬件工程师的效率革命&#xff1a;Notepad与Verilog语法检查的终极整合方案 在数字电路设计领域&#xff0c;Verilog作为主流硬件描述语言&#xff0c;其语法检查是每位工程师日常工作中不可或缺的环节。传统工作流程中&#xff0c;工程师们不得不在文本编辑器与EDA工具之间频繁…...

告别PS!用ImageMagick命令行5分钟搞定100张图片格式批量转换(附Windows/Mac安装避坑)

告别PS&#xff01;用ImageMagick命令行5分钟搞定100张图片格式批量转换&#xff08;附Windows/Mac安装避坑&#xff09; 在数字内容爆炸式增长的今天&#xff0c;图片处理已成为开发者、设计师和内容运营人员的日常刚需。当面对上百张需要统一转换格式、调整尺寸的图片时&…...

Cadence Virtuoso计算器函数面板:从仿真波形到关键指标,手把手教你提取运放GBW和相位裕度

Cadence Virtuoso计算器函数实战&#xff1a;运放AC特性自动化评估指南 在模拟电路设计的日常工作中&#xff0c;我们常常需要面对这样的场景&#xff1a;完成运放AC仿真后&#xff0c;面对密密麻麻的波形曲线&#xff0c;如何快速准确地提取出增益带宽积(GBW)和相位裕度(PM)这…...