博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
244. Shortest Word Distance II
阅读量:4648 次
发布时间:2019-06-09

本文共 1377 字,大约阅读时间需要 4 分钟。

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

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

有一点需要注意的是,A出现的位置和B出现的位置都是按顺序添加的,从小到大。

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

public class WordDistance {    Map
> map; int length; public WordDistance(String[] words) { length = words.length; if(length == 0) return; map = new HashMap
>(); for(int i = 0; i < words.length;i++) { if(map.containsKey(words[i])) { map.get(words[i]).add(i); } else { List
tempList = new ArrayList<>(); tempList.add(i); map.put(words[i],new ArrayList<>(tempList)); } } } public int shortest(String word1, String word2) { List
list1 = map.get(word1); List
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

你可能感兴趣的文章
WEB消息推送-comet4j
查看>>
安卓开发 数据存储
查看>>
贪心思维 专题记录 2017-7-21
查看>>
vue-router 跳转原理
查看>>
strncpy函数使用
查看>>
(一)SOA学习-相关缩写
查看>>
Apache ab 压力测试工具
查看>>
noi.ac NOIP2018 全国热身赛 第四场 T1 tree
查看>>
(转)linux下vi编辑器编写C语言的配置
查看>>
多线程基础知识 转
查看>>
MyBatis generator 使用方式 小结
查看>>
Android小项目之五 splash动画效果
查看>>
JavaScript 第十章总结:first class functions
查看>>
微信公众号发送客服消息【文本、图片】
查看>>
iText简介(转)
查看>>
vue搭建后可以改下全局配置
查看>>
【Docker】Segmentation Fault or Critical Error encountered. Dumping core and abort
查看>>
字典树从第i个构造HDU2846
查看>>
SQL优化笔记(二)—CPU优化
查看>>
bzoj 1042 HAOI2008 硬币购物
查看>>