从“丑数”算法题到 AI 实战思维:一场堆与建模的对话

如何求出第 n 个"丑数"(Ugly Number)。它不仅是对数据结构运用的考察,更是一道与 AI 场景悄然共鸣的经典题。本文将从 Java 解法入手,深度解析其原理,并延展到 AI 工程中的应用启示。

📌 问题定义

我们称一个正整数为"丑数",如果它的质因数仅包含 2, 3, 5

比如前 10 个丑数是:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12]

题目要求我们找出第 n 个这样的数字。

💡 解题思路

这个问题的核心在于:

如何按顺序生成 丑数,并避免重复计算

我们可以采用最小堆(PriorityQueue)+ Set 去重的策略:

  1. 初始加入第一个丑数 1
  2. 每次从堆中弹出最小元素 cur
  3. cur * 2, cur * 3, cur * 5 三个新数加入堆。
  4. 使用 Set 来确保不会重复加入。

这样,每次堆顶的元素就是当前最小的丑数。重复上述过程 n 次,第 n 个弹出的元素即为答案。

✅ Java 实现代码

ini 复制代码
import java.util.*;

public class UglyNumber {

    public int uglyNumber(int n) {
        PriorityQueue<Long> minHeap = new PriorityQueue<>();
        Set<Long> visited = new HashSet<>();
        minHeap.offer(1L);
        visited.add(1L);
        Long cur = 0L;

        for (int i = 0; i < n; i++) {
            cur = minHeap.poll();
            if (visited.add(cur * 2)) minHeap.offer(cur * 2);
            if (visited.add(cur * 3)) minHeap.offer(cur * 3);
            if (visited.add(cur * 5)) minHeap.offer(cur * 5);
        }

        return cur.intValue();
    }
}

🔍 时间与空间复杂度分析

  • 时间复杂度:O(n log n),因为每次堆操作是 log 级别,总共 n 次。
  • 空间复杂度:O(n),堆和 HashSet 的空间开销。

🤖 延伸思考:这道题在 AI 工程中有什么价值?

别小看这道看似"算法入门"的题,它实际上与 AI 系统开发中的很多问题高度契合:

1. 数据去重与优先处理

在训练 AI 模型时,我们常常要处理重复样本 或对样本赋予优先级(Priority) 。本题通过堆与 Set 的结合,体现了如何设计一个去重 + 有序处理的数据管道。

2. 生成式任务中的候选管理

像 ChatGPT 这类生成模型,其 Beam Search 或 Top-K Sampling 机制中,也存在"生成候选并选出优者"的问题,这与我们在堆中维护下一个候选丑数如出一辙。

3. 资源调度与 AI 系统优化

在大型 AI 系统中(比如调度多 GPU 训练任务),我们也经常用最小堆等策略进行任务分配和负载均衡。这些背后的思想和本题高度一致。

  • 堆结构生成有序序列,对理解流式处理(stream processing)有帮助。
  • 再次认识到一个经典算法题背后可以蕴含系统设计与 AI 工程的核心思想。
  • 在构建 AI 产品时,若能不断抽象建模,很多"复杂任务"其实可以还原为简单而高效的算法解法。
相关推荐
小O的算法实验室4 分钟前
IEEE TCDS,基于改进双神经网络三维未知环境多机器人协同区域覆盖搜索
人工智能·神经网络·机器人
爱敲键盘的猴子7 分钟前
深入理解 Java HashMap
java·hashmap
霸道流氓气质7 分钟前
Java开发者AI编程常用MCP、Skills、Rules全景汇总
java·开发语言·ai编程
无凭9 分钟前
DeepSeek Harness 为什么需要 Cordis:从 Everything is Plugin 开始看
人工智能·架构
炮哥聊AI9 分钟前
会调工具的 Agent 只值一半:真正的业务智能体,得会"记仇"
人工智能·agent
字节跳动数据库12 分钟前
火山 PostgreSQL Serverless × 飞书妙搭:把 AI 装进数据库,一句话唤醒数据智能
数据库·人工智能·后端
智购科技自动贩卖机13 分钟前
自动售货机硬件主控方案选型实战:单片机、树莓派、ESP32怎么选?
人工智能·单片机·嵌入式硬件·物联网·网络协议·yolo·架构
用户19172912708314 分钟前
企业 Agent 运行时护栏:独立安全层四道防线设计与落地
人工智能
beiju16 分钟前
从 Meta AI Mac 版看 Agent 产品:桌面端真正解决的是交付上下文
人工智能
Scene21617 分钟前
旧 REST 接口封装成 MCP 服务:完整实战指南
人工智能·后端