evaluate-division
https://leetcode.com/problems/evaluate-division/ public class Solution { private Map mp; private class Item { public String str; public double prop; public Item(String s, double p) { str = s; prop = p; } } public double[] calcEquation(String[][] equations, double[] values, String[][] queries) { mp = new HashMap(); for (int i=0; i<values.length; i++) { String str1 = equations[i][0]; String str2 = equations[i][1]; double val = values[i]; List lt = (List)mp.remove(str2); if (lt == null) { lt = new ArrayList(); } Item itm = new Item(str1, val); lt.add(itm); mp.put(str2, lt); lt = (List)mp.remove(str1); if (lt == null) { lt = new ArrayList(); } itm = new Item(str2, 1/val); lt.add(itm); mp.put(str1, lt); } double []ret = new double[queries.length]; Set st = new HashSet(); Queue qe = new LinkedList(); Iterator itr; List lt; Item baseItm; for (int i=0; i<queries.length; i++) { st.clear(); qe.clear(); double dret = -1; String str1 = queries[i][0]; String str2 = queries[i][1]; qe.offer(new Item(str2, 1)); st.add(str2); while ((baseItm = (Item)qe.poll()) != null) { lt = (List)mp.get(baseItm.str); if (lt == null) { continue; } itr = lt.iterator(); while (itr.hasNext()) { Item itmm = (Item)itr.next(); if (itmm.str.equals(str1)) { dret = itmm.prop * baseItm.prop; break; } if (st.contains(itmm.str)) { continue; } Item newItm = new Item(itmm.str, itmm.prop*baseItm.prop); qe.offer(newItm); st.add(itmm.str); } if (dret != -1) { break; } } ret[i] = dret; } return ret; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!