当前位置:网站首页>Leetcode: Shortest Word Distance II
Leetcode: Shortest Word Distance II
2022-07-05 14:56:00 【Full stack programmer webmaster】
This is a follow up of Shortest Word Distance. The only difference is now you are given the list of words and your method will be called repeatedly many times with different parameters. How would you optimize it?
Design a class which receives a list of words in the constructor, and implements a method that takes two words word1 and word2 and return the shortest distance between these two words in the list.
For example,
Assume that words = ["practice", "makes", "perfect", "coding", "makes"].
Given word1 = “coding”, word2 = “practice”, return 3.
Given word1 = "makes", word2 = "coding", return 1.
Note:
You may assume that word1 does not equal to word2, and word1 and word2 are both in the list.Hash table method
Complexity
Time O(N) Space O(N)
Ideas
Because... Will be called many times , We can't find the subscripts of these two words every time we call . We can use a hash table , When passing in a string array , Use HashMap To store word as well as word stay Array What's in it index. So when the shortest distance method is called , We just need to traverse the subscript list of two words . Specific comparison methods , It's like merge two list, Compare two at a time list The two smallest values , You get a difference . Then remove the smaller one . Because we traverse the input array from front to back , So the subscript list is also orderly .
1 public class WordDistance {
2
3 HashMap<String, ArrayList<Integer>> map;
4
5 public WordDistance(String[] words) {
6 this.map = new HashMap<String, ArrayList<Integer>>();
7 for (int i=0; i<words.length; i++) {
8 String item = words[i];
9 if (map.containsKey(item)) {
10 map.get(item).add(i);
11 }
12 else {
13 ArrayList<Integer> list = new ArrayList<Integer>();
14 list.add(i);
15 map.put(item, list);
16 }
17 }
18 }
19
20 public int shortest(String word1, String word2) {
21 ArrayList<Integer> l1 = map.get(word1);
22 ArrayList<Integer> l2 = map.get(word2);
23 int minDis = Integer.MAX_VALUE;
24 int i=0, j=0;
25 while (i<l1.size() && j<l2.size()) {
26 int p1 = l1.get(i);
27 int p2 = l2.get(j);
28 minDis = Math.min(minDis, Math.abs(p1-p2));
29 if (p1 < p2) i++;
30 else j++;
31 }
32 return minDis;
33 }
34 }
35
36 // Your WordDistance object will be instantiated and called as such:
37 // WordDistance wordDistance = new WordDistance(words);
38 // wordDistance.shortest("word1", "word2");
39 // wordDistance.shortest("anotherWord1", "anotherWord2");Publisher : Full stack programmer stack length , Reprint please indicate the source :https://javaforall.cn/109200.html Link to the original text :https://javaforall.cn
边栏推荐
- webRTC SDP mslabel lable
- 729. My schedule I: "simulation" & "line segment tree (dynamic open point) &" block + bit operation (bucket Division) "
- Postgresql 13 安装
- 市值蒸发超百亿美元,“全球IoT云平台第一股”赴港求生
- 浅谈Dataset和Dataloader在加载数据时如何调用到__getitem__()函数
- JMeter performance test: serveragent resource monitoring
- 1330:【例8.3】最少步数
- GPS original coordinates to Baidu map coordinates (pure C code)
- [detailed explanation of Huawei machine test] character statistics and rearrangement
- SSL证书错误怎么办?浏览器常见SSL证书报错解决办法
猜你喜欢

MongDB学习笔记

Fr exercise topic --- comprehensive question

FR练习题目---简单题

IPv6与IPv4的区别 网信办等三部推进IPv6规模部署

Behind the ultra clear image quality of NBA Live Broadcast: an in-depth interpretation of Alibaba cloud video cloud "narrowband HD 2.0" technology
![[JVM] operation instruction](/img/f5/85580495474ef58eafbb421338e93f.png)
[JVM] operation instruction

Select sort and bubble sort

面试突击62:group by 有哪些注意事项?

实现一个博客系统----使用模板引擎技术

How to paste the contents copied by the computer into mobaxterm? How to copy and paste
随机推荐
Stm32+bh1750 photosensitive sensor obtains light intensity
实现一个博客系统----使用模板引擎技术
Pointer operation - C language
Explain Vue's plan to clean up keepalive cache in time
How to solve the problem of garbled code when installing dependency through NPM or yarn
Long list optimized virtual scrolling
Detailed explanation of usememo, memo, useref and other relevant hooks
【jvm】运算指令
想进阿里必须啃透的12道MySQL面试题
Implement a blog system -- using template engine technology
STM32+BH1750光敏传感器获取光照强度
【NVMe2.0b 14-9】NVMe SR-IOV
How to open an account of qiniu securities? Is it safe to open an account?
Security analysis of Web Architecture
How to choose the appropriate certificate brand when applying for code signing certificate?
729. My schedule I: "simulation" & "line segment tree (dynamic open point) &" block + bit operation (bucket Division) "
CPU design practice - Chapter 4 practice task 3 use pre delivery technology to solve conflicts caused by related issues
Select sort and bubble sort
SSL证书错误怎么办?浏览器常见SSL证书报错解决办法
MySQL----函数