243. Shortest Word Distance 最短的单词index之差
[抄题]:
Given a list of words and two words word1 and word2, 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.
[暴力解法]:
时间分析:
空间分析:
[优化后]:
时间分析:
空间分析:
[奇葩输出条件]:
[奇葩corner case]:
[思维问题]:
不知道用什么数据结构指定index
[一句话思路]:
指定index只需要设成-1然后遍历就行
[输入量]:空: 正常情况:特大:特小:程序里处理到的特殊情况:异常情况(不合法不合理的输入):
[画图]:
[一刷]:
- 头一次见:必须在p1 p2都摆脱初始值-1的时候,才能比较,否则一直为0
[二刷]:
[三刷]:
[四刷]:
[五刷]:
[五分钟肉眼debug的结果]:
[总结]:
必须在p1 p2都摆脱初始值-1的时候,才能比较,否则一直为0
[复杂度]:Time complexity: O(n) Space complexity: O(1)
[英文数据结构或算法,为什么不用别的数据结构或算法]:
字符串判断相等用的是equals,你没记错
[关键模板化代码]:
[其他解法]:
[Follow Up]:
244. Shortest Word Distance II 多次调用:hashmap多次取
3:可重复:用数学
[LC给出的题目变变变]:
[代码风格] :
class Solution { public int shortestDistance(String[] words, String word1, String word2) { //cc if (words == null || words.length == 0) { return 0; } //ini int p1 = -1, p2 = -1, min = Integer.MAX_VALUE; //for loop, renew p1 p2, compare for (int i = 0; i < words.length; i++) { if (words[i].equals(word1)) { p1 = i; } if (words[i].equals(word2)) { p2 = i; } if (p1 != -1 && p2 != -1) { min = Math.min(min, Math.abs(p2 - p1)); } } //return return min; } }