数据结构与算法# 图论
文章平均质量分 60
图的理论和相关算法
reept
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
按照左右半区的方式重新组合单链表
题目要求将单链表按左右半区交叉重排。解决方法是:1)找到链表中间节点mid;2)将链表拆分为左半区(head到mid)和右半区(mid.next到末尾);3)将两个半区按L1→R1→L2→R2的顺序合并。关键步骤包括快慢指针定位mid、拆分链表、交叉合并。代码实现了这一逻辑,通过遍历和指针操作完成重排,适用于奇数或偶数长度的链表。时间复杂度为O(N),空间复杂度O(1)。原创 2025-09-18 11:07:11 · 360 阅读 · 0 评论 -
谱聚类与Python代码实现
谱聚类是一种基于图论的聚类方法,通过构建数据相似度矩阵并分析拉普拉斯矩阵的特征结构来实现聚类。该算法将数据点视为图节点,利用节点间的相似度构建权重矩阵,通过特征分解获得低维嵌入空间后进行聚类(如K-means)。相比传统方法,谱聚类能识别非凸分布数据(如环形、流形结构),但对参数选择敏感且计算复杂度较高(O(n^3)),适用于中小规模数据。典型应用包括图像分割和社交网络分析。实现过程包含相似度矩阵构建、拉普拉斯矩阵计算、特征分解及最终聚类等关键步骤。原创 2025-06-09 16:13:45 · 666 阅读 · 0 评论 -
算法-删除链表的中间节点和a/b处的节点
问题分析:如果链表为空或者长度为1,不需要调整,则直接返回;如果链表的长度为2,将头节点删除即可;如果大于等于3,则中间节点可取 (int) Math.ceil(tag / 2)。方法:先计算double r = ((double) (a * n)) / ((double) b)的值,然后r向上取整。之后的整数值代表该删除的节点是第几个节点。removeByRatio 方法。原创 2025-06-04 09:32:35 · 265 阅读 · 0 评论 -
题目: 字符串str1和str2 ,str1是否包含str2,如果包含str2在str开始的位置,如何做到时间复杂度O(N)完成?
KMP算法;字符串;转载 2023-06-03 18:27:44 · 234 阅读 · 0 评论
分享