<Array> 277 243 244 245
277. Find the Celebrity
knows(i, j):
By comparing a pair(i, j), we are able to discard one of them
1. True: i 必定不是Celebrity, 因为Celebrity不认识任何人
2. False: j 必定不是Celebrity, 因为Celebrity要被其他人认识。
第一轮:找出一个可能是Celebrity的Candidate,因为在之前的人都不是Celebrity,Candidate不认识后面的人,后面的人也不是Celebrity,但是前面的人可能不认识这个Candidate。
第二轮:验证这个Candidate是不是Celebrity。
public class Solution extends Relation {
public int findCelebrity(int n) {
int candidate = 0;
//1. Find a candidate by one pass:(make sure other people are not a celebrity)
for(int i = 1; i < n; i++){
if(knows(candidate, i)){
candidate = i;
}
}
//2. Make sure if the candidate is a celebrity by one pass
for(int i = 0; i < n; i++){
if(i == candidate){
continue;
}
if(!knows(i, candidate) || knows(candidate, i)){
return -1;
}
}
return candidate;
}
}
243. Shortest Word Distance
用index a和b来记录xia
class Solution {
public int shortestDistance(String[] words, String word1, String word2) {
int a = -1;
int b = -1;
int result = Integer.MAX_VALUE;
for(int i = 0; i < words.length; i++){
if(word1.equals(words[i])){
a = i;
}else if(word2.equals(words[i])){
b = i;
}
if(a != -1 && b != -1){
result = Math.min(result, Math.abs(a - b));
}
}
return result;
}
}
244. Shortest Word Distance II
用HashMap来记录每个单词和他的索引,然后再计算距离的最小值。

class WordDistance {
Map<String, List<Integer>> map = new HashMap<>();
public WordDistance(String[] words) {
for(int i = 0; i < words.length; i++){
if(map.containsKey(words[i])){
map.get(words[i]).add(i);
}else{
List<Integer> list = new ArrayList<>();
list.add(i);
map.put(words[i], list);
}
}
}
public int shortest(String word1, String word2) {
List<Integer> l1 = map.get(word1);
List<Integer> l2 = map.get(word2);
int i = 0, j = 0;
int result = Integer.MAX_VALUE;
while(i < l1.size() && j < l2.size()){
if(l1.get(i) < l2.get(j)){
result = Math.min(result, l2.get(j) - l1.get(i));
i++;
}else{
result = Math.min(result, l1.get(i) - l2.get(j));
j++;
}
}
return result;
}
}
245. Shortest Word Distance III
用b来记录上一个相同string的位置,到第二个位置的时候赋值给a。
class Solution {
public int shortestWordDistance(String[] words, String word1, String word2) {
int a = words.length, b = -words.length;
int result = Integer.MAX_VALUE;
for(int i = 0; i < words.length; i++){
if(words[i].equals(word1)){
a = i;
}
if(words[i].equals(word2)){
if(word1.equals(word2))
a = b;
b = i;
}
if(a != -1 && b != -1){
result = Math.min(result, Math.abs(a - b));
}
}
return result;
}
}
<Array> 277 243 244 245的更多相关文章
- ***CodeIgniter集成微信支付(转)
微信支付Native扫码支付模式二之CodeIgniter集成篇 http://www.cnblogs.com/24la/p/wxpay-native-qrcode-codeigniter.html ...
- Bitmap vs 2Bitmap的实现
[本文链接] http://www.cnblogs.com/hellogiser/p/bitmap-vs-2bitmap.html [题目] 在2.5亿个整数找出不重复的整数,内存不足以容纳着2.5亿 ...
- java中常用的工具类(三)
继续分享java中常用的一些工具类.前两篇的文章中有人评论使用Apache 的lang包和IO包,或者Google的Guava库.后续的我会加上的!谢谢支持IT江湖 一.连接数据库的综合类 ...
- java中常用的工具类(二)
下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- PHP和Golang使用Thrift1和Thrift2访问Hbase0.96.2(ubuntu12.04)
目录: 一.Thrift1和Thrift2的简要介绍 1) 写在前面 2) Thrift1和Thrift2的区别 二.Thrift0.9.2的安装 1) 安装依赖插件 2) Thrift0.9.2的 ...
- Android中多线程下载列表的封装实现(含进度反馈)
来源:http://blog.csdn.net/u011638883/article/details/17347015 实现了一下Android中的文件多线程下载模块,支持自定义线程数.断点续传.下载 ...
- js正则验证方法大全
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- retrofit2 okhttp3 RxJava butterknife 示例
eclipse的jar包配置 eclipse中貌似用不了butterknife buildToolsVersion "23.0.2" defaultConfig { applica ...
- WCF的执行过程
既然是实现互通信.那么肯定会有概念意义上的服务端Server 和概念意义上的客户端 Client,在这里,我所说明的都是概念意义上的,单独强调此,是因为,基于WCF的通信没有物理上的划分,但是概念上 ...
随机推荐
- 题解:swj社会摇成佛第六课
题目链接 solution: dp f[i]表示lhy小伙身长为i,能砍得的最优解 f[i]=f[j]*f[i-j]; public class CuttingRope01 { public stat ...
- 解决Fiddler在win7系统下的安全证书问题
如果电脑win7系统,一直解决不了Fiddler的证书安装问题,可以试试下面的办法. 在安装证书的时候一直遇到这个问题. 这是因为win7系统的在.net Framework4.0上面的bug引起的. ...
- 【LOJ2402】「THUPC 2017」天天爱射击 / Shooting(整体二分)
点此看题面 大致题意: 有\(n\)个区间,每个区间有一个权值,当权值变成\(0\)时消失.每个时刻将覆盖某一位置的所有区间权值减\(1\),求每个时刻有多少个区间在这一刻消失. 前言 整体二分裸题啊 ...
- onload()方法只能在body标签中调用吗?怎么调用多个多个方法?
第一个问题: onload()方法并非只能在body标签中调用的,还可以在js中用window.onload = function() {函数名};来调用:另外img等标签也支持onload方法. 支 ...
- hdu-6415 计数DP
Nash Equilibrium is an important concept in game theory. Rikka and Yuta are playing a simple matrix ...
- python爬虫:将数据保存到本地
一.python语句存储 1.with open()语句 with open(name,mode,encoding) as file: file.write() name:包含文件名称的字符串; mo ...
- python处理sqlserver数据库的返回数据
上代码: import SqlHelper.MSSQL as MS import pandas as pd if __name__ == '__main__': #连接数据库 ms = MS.MSSQ ...
- Hive_hdfs导入csv文件
转自:Hive_hdfs csv导入hive demo 1 create csv file.student.csv 4,Rose,M,78,77,76 5,Mike,F,99,98,98 2 pu ...
- 用PHP写出计算器
<body> <?php if (!empty($_POST)) { $op=$_POST['point']; $sum1 = $_POST['sum1']; $sum2 = $_P ...
- System 类初探
System 类 操作方法 取得当前的系统时间 currentTemiMillis() public static long currenTimeMillis() ; 实例: 统计某些操作的执行时间 ...