244. Shortest Word Distance II
因为要多次查询,每次都遍历肯定不行,所以要保存信息。
最直接的就是保存每个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相关推荐
- 【DFS + 记忆化递归】LeetCode 140. Word Break II
LeetCode 140. Word Break II Solution1:我的答案 纯DFS,在第31个case时超时,还是记录一下.. class Solution { // DFS public ...
- 【DFS + Backtracking】LeetCode 212. Word Search II
LeetCode 212. Word Search II Solution1:我的答案 暴力搜索..基于第79题的答案,真的是非常之慢啊!!! 快的方法均是基于字典树的方法,真是复杂.. class ...
- 【难点+重点BFS】LeetCode 126. Word Ladder II
LeetCode 126. Word Ladder II Solution1: 参考自花花酱:http://zxi.mytechroad.com/blog/searching/leetcode-126 ...
- 【lintcode】树形数据结构之Maxtree, Tree iterator, remove bst node, 优先队列之动态中位数Median, 矩阵dfs之word search II,最大连
解析 max ksubarray sum: 最大和 of 连续子序列 => 最大和 of k份连续子序列 属于dp,30行代码搞定,注意一些边界. substr diff: 无queu ...
- Word Break Word Break II
leetcode上面的两道动态规划题. 题目1 Word Break Given a string s and a dictionary of words dict, determine if s c ...
- [LeetCode] Word Break II 拆分词句之二
[LeetCode] Word Break II 拆分词句之二 Given a string s and a dictionary of words dict, add spaces in s to ...
- 126. Word Ladder II
Title 给定两个单词(beginWord 和 endWord)和一个字典 wordList,找出所有从 beginWord 到 endWord 的最短转换序列.转换需遵循如下规则: 每次转换只能改 ...
- leetcode 212. Word Search II | 212. 单词搜索 II(Trie,回溯,DFS)
题目 https://leetcode.com/problems/word-search-ii/ 题解 基于前缀树实现,如果把 Trie 也看做一个特殊的图的话,就是 将两个图同时进行 dfs,就像判 ...
- leetcode 140. Word Break II | 140. 单词拆分 II(动态规划)
题目 https://leetcode.com/problems/word-break-ii/ 题解 由 leetcode 139. Word Break | 139. 单词拆分(动态规划) 改造而来 ...
最新文章
- 荣耀30pro系统_荣耀30 pro:正式再见!
- Weblogic 10.3.6 for linux 集群安装
- Windows Server 2003摆脱了恼人的Ctrl+Alt+Del
- 二手房买卖砍价最新攻略 帮你花少钱买好房
- 【Fiddler 实战操作】如何使用 Fiddler 对苹果手机进行抓包
- java8之StringJoiner。终于有像guava类库里的功能了
- tcping命令详解
- 安装软件提示计算机管理员权限,Win7安装软件需要管理员权限的解决方法
- 苹果电脑上几款不错的矢量绘图工具
- Android 如何修改factory mode下FM的默认测试频点及阀值
- 什么是二进制,进制之间是如何转换的,浅显易懂的,一看就会
- 应用程序界面开发 - 自定义用户控件布局控件的使用
- 手机端网站底部悬浮 广告代码 代关闭_只要是安卓手机就不能少这个APP
- 2天获订2万台,明明如此普通,自游家NV为何如此自信?
- 搜索FTP服务器上的文件
- Python将乘法表写入Excel表
- eclipse链接Hadoop集群时报错Error:Call From xxx/xxx.xxx.xxx.xxx to hostname1:9000 failed on connection excep
- 中宏涌晟投资理财收益最大化技巧
- Matlab制作GUI
- oracle povit,oracle pivot 和 unpivot 函数的使用