分类: AI算法
每日算法 — 使用java实现机器人寻宝:旋转排序数组的二分查找与边界判定
问题背景 想象一个寻宝机器人,它面前是一个环形旋转密码盘。密码盘上的数字原本按升序排列,但被人为旋转了某个未知的位置。机器人需要通过二分查找算法,在O(log...
每日算法 — 使用java实现单词分组:哈希表排序与字符频率统计算法
问题背景 字母异位词分组是字符串处理中的经典问题。所谓异位词(Anagram),是指由相同字母以不同顺序组成的单词,如 "listen" 和 "silent"、"triangle" 和...
每日算法 — 使用java实现分块算法:区间查询与修改的平方根分解策略
引言 在处理大规模数组的区间查询与修改问题时,线段树与树状数组是常见的高效数据结构。然而,当操作类型复杂、难以用简单的懒标记维护时,分块算法(Sqrt...
每日算法 — 使用java实现二叉堆:完全二叉树实现优先队列与堆化操作
引言 优先队列(Priority Queue)是计算机科学中最常用的数据结构之一,广泛应用于任务调度、图算法(如 Dijkstra)、Top-K 问题等场景。而二叉堆(Binary...
每日算法 — 使用java实现双端队列BFS:0-1权重图的最短路径优化
引言 在图论中,Dijkstra 算法可以求解非负权边的单源最短路径问题,时间复杂度为 O((V+E) log V)。然而,当图中所有边的权重仅为 0 或 1...
每日算法 — 使用java实现KM算法:二分图最大权匹配与任务分配最优解
引言 在任务分配、资源调度、婚姻匹配等场景中,我们常常需要将两组实体进行配对,使得总收益最大或总成本最小。当配对存在不同的权重时,匈牙利算法的扩展——KM...
每日算法 — 使用java实现FFT快速傅里叶变换:分治策略与多项式乘法加速
引言 多项式乘法是信号处理、密码学、大整数运算中的基础操作。朴素的 O(n²) 算法在多项式次数较高时效率低下。快速傅里叶变换(Fast Fourier Transform,...
每日算法 — 使用java实现欧拉函数:线性筛构造与积性函数性质
算法背景 欧拉函数(Euler's Totient Function),记作 φ(n),表示小于等于 n 的正整数中与 n 互质的数的个数。例如...