
思路: two pointer。这题我第一反应其实就是two pointer,但two pointer真的变种太多了。而我走的那条路恰恰是行不通的。我的想法是,two poiner,一个首一个尾,先找到一个满足条件的,然后再慢慢缩短距离来优化。我不知道这个思路可行不可行,总之我是没有实现出来。无奈只能看答案,答案是two pointer, idx1记录word1的位置,idx2记录word2的位置。遍历数组(用i),碰到的元素是word1,就将idx1设置为1;碰到的元素是word2,则将idx2设置为i。每次如果有idx1或者idx2改变值的话,就要check最小值是否变化。其实它这边也是先找到一个符合条件的,然后再往后面走,找有没有距离更小的(优化)。只不过他是两个pointer都是从数组开头开始走的。这道题还是不错的我觉得,下面展示代码:
class Solution {
public int shortestDistance(String[] words, String word1, String word2) {
int idx1 = -1, idx2 = -1, min = Integer.MAX_VALUE;
for(int i = 0; i < words.length; i++){
if(words[i].equals(word1)){
idx1 = i;
if(idx2 != -1)
min = Math.min(min,idx1 - idx2);
}
if(words[i].equals(word2)){
idx2 = i;
if(idx1 != -1)
min = Math.min(min,idx2 - idx1);
}
}
return min;
}
}
总结:
- two pointer有很多情况,需要多多累积,见的多了自然选择的就准了。
本文深入探讨了两指针算法在解决特定问题时的应用,通过一个具体的例子展示了如何使用两指针来寻找字符串数组中两个目标单词之间的最短距离。文章详细解释了算法的思路,包括初始化指针位置、遍历数组并更新最小距离的过程。
533

被折叠的 条评论
为什么被折叠?



