news 2026/4/18 1:30:23

day62(1.21)——leetcode面试经典150

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
day62(1.21)——leetcode面试经典150

399. 除法求值

399. 除法求值

我真服了江西这个天气,气死我了,这么冷 想冻死谁 我搁着敲代码手都要冻僵了 气死了 想回学校了 这么冷 谁写的动 真要要被冻死了啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

题目:

题解:

class UnionFind { private final int[] fa; // 代表元 public final double[] mul; // x 的值 * mul[x] = x 的代表元的值 public UnionFind(int n) { fa = new int[n]; // 一开始有 n 个集合 {0}, {1}, ..., {n-1} // 集合 i 的代表元是自己,自己 * 1 = 自己 for (int i = 0; i < n; i++) { fa[i] = i; } mul = new double[n]; Arrays.fill(mul, 1); } // 返回 x 所在集合的代表元 // 同时做路径压缩,也就是把 x 所在集合中的所有元素的 fa 都改成代表元 private int find(int x) { if (fa[x] != x) { int root = find(fa[x]); mul[x] *= mul[fa[x]]; // 更新 x 到其代表元的 mul 值 fa[x] = root; } return fa[x]; } // 判断 x 和 y 是否在同一个集合 public boolean same(int x, int y) { // 如果 x 的代表元和 y 的代表元相同,那么 x 和 y 就在同一个集合 // 这就是代表元的作用:用来快速判断两个元素是否在同一个集合 return find(x) == find(y); } // 合并 from 和 to,新增信息 to / from = value // 其中 to 和 from 表示未知量,下文的 x 和 y 也表示未知量 public void merge(int from, int to, double value) { int x = find(from); int y = find(to); if (x == y) { // from 和 to 在同一个集合,不做合并 return; } // x --------- y // / / // from ------- to // 已知 x/from = mul[from] 和 y/to = mul[to],现在合并 from 和 to,新增信息 to/from = value // 由于 y/from = (y/x) * (x/from) = (y/to) * (to/from) // 所以 y/x = (y/to) * (to/from) / (x/from) = mul[to] * value / mul[from] mul[x] = mul[to] * value / mul[from]; fa[x] = y; } } class Solution { public double[] calcEquation(List<List<String>> equations, double[] values, List<List<String>> queries) { // 把不同字符串映射为不同的数字,方便使用并查集 Map<String, Integer> variableToId = new HashMap<>(); for (List<String> equation : equations) { for (String s : equation) { variableToId.putIfAbsent(s, variableToId.size()); } } // 初始化并查集 UnionFind uf = new UnionFind(variableToId.size()); for (int i = 0; i < equations.size(); i++) { List<String> equation = equations.get(i); uf.merge(variableToId.get(equation.get(1)), variableToId.get(equation.get(0)), values[i]); } // 回答询问 double[] ans = new double[queries.size()]; for (int i = 0; i < queries.size(); i++) { List<String> query = queries.get(i); Integer c = variableToId.get(query.get(0)); Integer d = variableToId.get(query.get(1)); if (c != null && d != null && uf.same(c, d)) { // c * mul[c] = d * mul[d] = 代表元的值 // => c / d = mul[d] / mul[c] ans[i] = uf.mul[d] / uf.mul[c]; } else { ans[i] = -1; } } return ans; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 5:41:14

MCP客户端:开启智能工具交互的新纪元

MCP客户端&#xff1a;开启智能工具交互的新纪元 【免费下载链接】awesome-mcp-clients A collection of MCP clients. 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-mcp-clients 你是否曾想过&#xff0c;只需一句话&#xff0c;AI就能帮你完成复杂的数据…

作者头像 李华
网站建设 2026/4/18 5:15:26

终极键盘训练指南:10倍提升英语输入速度的秘诀

终极键盘训练指南&#xff1a;10倍提升英语输入速度的秘诀 【免费下载链接】qwerty-learner 项目地址: https://gitcode.com/GitHub_Trending/qw/qwerty-learner 你是否曾经因为英语打字速度慢而错失重要机会&#xff1f;在当今数字化时代&#xff0c;快速准确的英语输…

作者头像 李华
网站建设 2026/4/18 3:45:10

光线太暗影响大?成像质量关键因素

光线太暗影响大&#xff1f;成像质量关键因素 1. 引言&#xff1a;为什么光线对人像卡通化如此重要&#xff1f; 你有没有遇到过这种情况&#xff1a;拍了一张自拍照&#xff0c;满怀期待地丢进人像卡通化工具里&#xff0c;结果生成的卡通形象不仅五官模糊&#xff0c;连肤色…

作者头像 李华
网站建设 2026/4/18 5:35:32

CrewAI终极指南:构建企业级AI协作系统的完整方案

CrewAI终极指南&#xff1a;构建企业级AI协作系统的完整方案 【免费下载链接】crewAI CrewAI 是一个前沿框架&#xff0c;用于协调具有角色扮演能力的自主 AI 代理&#xff0c;通过促进协作智能&#xff0c;使代理能够无缝协作&#xff0c;共同解决复杂任务。 项目地址: http…

作者头像 李华
网站建设 2026/4/18 8:06:56

低配电脑运行Qwen:显存压缩部署技巧分享

低配电脑运行Qwen&#xff1a;显存压缩部署技巧分享 你是不是也遇到过这样的问题&#xff1f;想用大模型生成一些有趣的图片&#xff0c;但自己的电脑配置不够&#xff0c;显存一爆就崩溃。尤其是像Qwen这类功能强大的多模态模型&#xff0c;虽然能生成高质量图像&#xff0c;…

作者头像 李华
网站建设 2026/4/18 8:53:02

通义千问3-14B完整指南:从Ollama安装到首次调用代码实例

通义千问3-14B完整指南&#xff1a;从Ollama安装到首次调用代码实例 1. 为什么是 Qwen3-14B&#xff1f;单卡时代的“守门员”级大模型 如果你正想找一个既能跑在消费级显卡上&#xff0c;又能处理长文本、做复杂推理&#xff0c;还支持商用的开源大模型&#xff0c;那 Qwen3…

作者头像 李华