Shortest Word Distance
2016-07-02 13:09
204 查看
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 =
Given word1 =
return 3.
Given word1 =
return 1.
思路1:用idx1 来记录上次word1出现的index,idx2来记录上次word2出现的index,这样每次跟新index1,index2的时候都减去上次出现的值,因为扫描是从左往右一直扫描。那么这样每次更新就会得到最小值。 O(n).
For example,
Assume that words =
["practice", "makes", "perfect", "coding", "makes"].
Given word1 =
“coding”, word2 =
“practice”,
return 3.
Given word1 =
"makes", word2 =
"coding",
return 1.
思路1:用idx1 来记录上次word1出现的index,idx2来记录上次word2出现的index,这样每次跟新index1,index2的时候都减去上次出现的值,因为扫描是从左往右一直扫描。那么这样每次更新就会得到最小值。 O(n).
public class Solution { public int shortestDistance(String[] words, String word1, String word2) { if(words == null || words.length == 0 || word1 == null || word2 == null) return 0; int index1 = -1; int index2 = -1; int mindis = Integer.MAX_VALUE; for(int i=0; i<words.length; i++){ if(words[i].equals(word1)){ index1 = i; if(index2 != -1){ mindis = Math.min(mindis, index1 - index2); } } if(words[i].equals(word2)){ index2 = i; if(index1 != -1){ mindis = Math.min(mindis, index2 - index1); } } } return mindis; } }
相关文章推荐
- 设计模式总览
- 经典库函数实现
- 匈牙利算法
- 注册表更改win7的UAC方法
- [金融学习笔记] 谈一点程序化交易[一]
- Palindrome Linked List
- XShell连接不了虚拟机
- ggplot2 scale相关设置2—时间设置
- docker学习之(一):docker相关资料-- debian docker安装教程-常用资料导航
- centos升级python
- Android逆向之旅---运行时修改内存中的Dalvik指令来改变代码逻辑
- 分布式技术一周技术动态 2016.07.03
- Windows系统下常用程序(或bat)自定义Windows快捷键启动
- React Native 开发到上线记录(二)
- 使用BitmapShader实现简单绘图
- mysql二进制包安装与配置实战记录
- 一、简单工厂模式
- 内存对齐,malloc内存对齐
- viewpager的简单实现
- MYSQL 系统命令 源码定位