因为要多次查询,每次都遍历肯定不行,所以要保存信息。

最直接的就是保存每个string出现的位置,查询A,B的时候就直接比较他们所有的出现INDEX中最小的情况。

有一点需要注意的是,A出现的位置和B出现的位置都是按顺序添加的,从小到大。
假设M是A出现的一个位置,N是B出现的一个位置,我们首先更新M和N的距离情况。然后看M和N谁小,小的只有变大才有可能得到更符合要求的结果(距离更小), 所以只改变当前INDEX小的string,找到它的下一次出现位置。。

public class WordDistance
{Map<String, List<Integer>> map;int length;public WordDistance(String[] words) {length = words.length;if(length == 0) return;map = new HashMap<String,List<Integer>>();for(int i = 0; i < words.length;i++){if(map.containsKey(words[i])){map.get(words[i]).add(i);}else{List<Integer> tempList = new ArrayList<>();tempList.add(i);map.put(words[i],new ArrayList<>(tempList));}}}public int shortest(String word1, String word2) {List<Integer> list1 = map.get(word1);List<Integer> list2 = map.get(word2);int l = 0;int r = 0;int res = Math.abs(list1.get(l) - list2.get(r));while(l < list1.size() && r < list2.size()){res = Math.min(res,Math.abs(list1.get(l) - list2.get(r)));if(res == 1) return 1;if(list1.get(l) < list2.get(r)) l++;else r++;}return res;}
}

这个题卡了一会……一开始想的是建图。。最短路径,不知道怎么想的。。

转载于:https://www.cnblogs.com/reboot329/p/5968418.html

244. Shortest Word Distance II相关推荐

  1. 【DFS + 记忆化递归】LeetCode 140. Word Break II

    LeetCode 140. Word Break II Solution1:我的答案 纯DFS,在第31个case时超时,还是记录一下.. class Solution { // DFS public ...

  2. 【DFS + Backtracking】LeetCode 212. Word Search II

    LeetCode 212. Word Search II Solution1:我的答案 暴力搜索..基于第79题的答案,真的是非常之慢啊!!! 快的方法均是基于字典树的方法,真是复杂.. class ...

  3. 【难点+重点BFS】LeetCode 126. Word Ladder II

    LeetCode 126. Word Ladder II Solution1: 参考自花花酱:http://zxi.mytechroad.com/blog/searching/leetcode-126 ...

  4. 【lintcode】树形数据结构之Maxtree, Tree iterator, remove bst node, 优先队列之动态中位数Median, 矩阵dfs之word search II,最大连

    解析 max ksubarray sum:  最大和 of 连续子序列 =>   最大和 of  k份连续子序列 属于dp,30行代码搞定,注意一些边界. substr diff:  无queu ...

  5. Word Break Word Break II

    leetcode上面的两道动态规划题. 题目1 Word Break Given a string s and a dictionary of words dict, determine if s c ...

  6. [LeetCode] Word Break II 拆分词句之二

    [LeetCode] Word Break II 拆分词句之二 Given a string s and a dictionary of words dict, add spaces in s to ...

  7. 126. Word Ladder II

    Title 给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列.转换需遵循如下规则: 每次转换只能改 ...

  8. leetcode 212. Word Search II | 212. 单词搜索 II(Trie,回溯,DFS)

    题目 https://leetcode.com/problems/word-search-ii/ 题解 基于前缀树实现,如果把 Trie 也看做一个特殊的图的话,就是 将两个图同时进行 dfs,就像判 ...

  9. leetcode 140. Word Break II | 140. 单词拆分 II(动态规划)

    题目 https://leetcode.com/problems/word-break-ii/ 题解 由 leetcode 139. Word Break | 139. 单词拆分(动态规划) 改造而来 ...

最新文章

  1. 荣耀30pro系统_荣耀30 pro:正式再见!
  2. Weblogic 10.3.6 for linux 集群安装
  3. Windows Server 2003摆脱了恼人的Ctrl+Alt+Del
  4. 二手房买卖砍价最新攻略 帮你花少钱买好房
  5. 【Fiddler 实战操作】如何使用 Fiddler 对苹果手机进行抓包
  6. java8之StringJoiner。终于有像guava类库里的功能了
  7. tcping命令详解
  8. 安装软件提示计算机管理员权限,Win7安装软件需要管理员权限的解决方法
  9. 苹果电脑上几款不错的矢量绘图工具
  10. Android 如何修改factory mode下FM的默认测试频点及阀值
  11. 什么是二进制,进制之间是如何转换的,浅显易懂的,一看就会
  12. 应用程序界面开发 - 自定义用户控件布局控件的使用
  13. 手机端网站底部悬浮 广告代码 代关闭_只要是安卓手机就不能少这个APP
  14. 2天获订2万台,明明如此普通,自游家NV为何如此自信?
  15. 搜索FTP服务器上的文件
  16. Python将乘法表写入Excel表
  17. eclipse链接Hadoop集群时报错Error:Call From xxx/xxx.xxx.xxx.xxx to hostname1:9000 failed on connection excep
  18. 中宏涌晟投资理财收益最大化技巧
  19. Matlab制作GUI
  20. oracle povit,oracle pivot 和 unpivot 函数的使用

热门文章

  1. KindleConverter:Word批量转换为6寸PDF
  2. windows添加删除程序打不开解决方案
  3. Mr.J--JS学习(继承模式发展史)
  4. mac 安装和使用MongoDB
  5. MYSQL 【汇总数据】 【分组数据】 学习记录
  6. 20140704笔试面试总结(java)
  7. 【原创,提供下载】winfrom 打印表格,字符串的封装
  8. 夏季晨练不得早于6点 - 生活至上,美容至尚!
  9. [Node.js] mySQL数据库 -- 英雄英雄管理系统接口
  10. 计算机科学与技术大学生职业规划,计算机科学与技术大学生职业生涯规划ppt