首页 > 代码库 > evaluate-division
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; }}
evaluate-division
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。