avatar
f*l
1
•Staples has Nikon 55-200mm AF-S DX VR Zoom-NIKKOR Lens for $149.99 -
$25 off $100 coupon = $124.99
•You will see that price at final check out page.
avatar
p*y
2
店面是两个中国人,一开始知道是国人还比较欣喜. 结果证明完全不是这么回事,反而感
觉很严格,最终挂了. 请大家分析下为啥挂? 难道第二题没有按面试官心中理想的答案
在面试时给他写出来? 以后看来一定要注意时间.
1. two sum
一开始根据题目理解以为是排好序的数组, 于是从两头开始找:
boolean twoSum(int[] nums, int sum){
if(nums==null || nums.length<2)
return false;
int low = 0, high = nums.length-1;
while(lowif( (nums[low]+nums[high]) == sum ){
return true;
}else if((nums[low]+nums[high]) < sum){
low++;
}else{
high--;
}
}
return false;
}
等我写好告之数组非排好序, 于是马上用hashmap方法写出:
boolean twoSum2(int[] nums, int sum){
if(nums==null || nums.length<2)
return false;
HashMap map = new HashMap();
for(int i=0; iif(!map.containsKey(nums[i])){
map.put(sum-nums[i], i);
}else{
return true;
}
}
return false;
}
第二题也比较常见,CC150原题, 找俩字符串在一段文字中最近的距离:
直接用CC150解法, 用两个index比较得出Math.abs(index1-index2), update最小距离.
写好后提示要是 cat dog cloud dog dog dog......,即后面有million个dog, 是否不
用比较整个文章.
回答说用map提早存储每个单词的index, 然后在map中找到单词比较, 在讨论后最坏情
况下复杂度也是O(n).
由于没有时间写代码了所以这样结速了.
结果几个小时后recruitor打电话要求把hashmap的解法补上发给他, 自个马上在IDE上
写了一个并调试后发给他:
public class WordDistanceFinder {
String[] strs;
public WordDistanceFinder (List words) {
strs = new String[words.size()];
for(int i=0; istrs[i] = words.get(i);
}
public int distance (String wordOne, String wordTwo) {
HashMap> map = new HashMapInteger>>();
if(strs==null || strs.length<2)
return 0;
for(int i=0; iif(strs[i].equals(wordOne) || strs[i].equals(wordTwo)){
ArrayList list;
if(map.containsKey(strs[i])){
list = map.get(strs[i]);
}else{
list = new ArrayList();
}
list.add(i);
map.put(strs[i], list);
}
}
ArrayList list1 = map.get(wordOne);
ArrayList list2 = map.get(wordTwo);
// if(list1.size()==0 || list2.size()==0) //check the null
if (list1==null || list2==null || list1.size() == 0 || list2.size()
== 0)
return 0;
int index1=0, index2=0;
int minDis = Integer.MAX_VALUE;
while(index1if(Math.abs(list1.get(index1)-list2.get(index2))minDis = Math.abs(list1.get(index1)-list2.get(index2));
if(list1.get(index1)index1++;
else
index2++;
}
return minDis;
}
}
avatar
m*r
3
how much神医球?

-

【在 f********l 的大作中提到】
: •Staples has Nikon 55-200mm AF-S DX VR Zoom-NIKKOR Lens for $149.99 -
: $25 off $100 coupon = $124.99
: •You will see that price at final check out page.

avatar
S*2
4
都写出来了还能挂?。。。想不通
avatar
d*1
5
有人收么
avatar
g*t
6
Two Sum
LC原题就不是排好序的,楼主想当然了。不过还好,code都挺好的
第二题求问原题是什么样子的? 感觉楼主都答出来了,不至于挂啊
avatar
p*y
7
他有一个奇怪的初始化函数, 什么
fun(1) 1
fun(2) 1, 2
fun(3) 1, 2, 3
以至我以为比如fun(n)是 1, 2, 3, 4,...,n.
是啊 我也感觉没问题 至少给二面.

【在 g********t 的大作中提到】
: Two Sum
: LC原题就不是排好序的,楼主想当然了。不过还好,code都挺好的
: 第二题求问原题是什么样子的? 感觉楼主都答出来了,不至于挂啊

avatar
p*y
8
原题就是给一些单词, 求两个单词的最近距离.

【在 g********t 的大作中提到】
: Two Sum
: LC原题就不是排好序的,楼主想当然了。不过还好,code都挺好的
: 第二题求问原题是什么样子的? 感觉楼主都答出来了,不至于挂啊

avatar
g*r
9
请问第二题,用hashmap的话,不是要事先建立好hashmap么?也就是说在constructor
里面建立好,然后每次调用计算diat的函数的时候,直接lookup hashmap,然后用
index table算。LZ为什么要把建立hashmap的code放到计算dist的函数里呢?

【在 p*y 的大作中提到】
: 店面是两个中国人,一开始知道是国人还比较欣喜. 结果证明完全不是这么回事,反而感
: 觉很严格,最终挂了. 请大家分析下为啥挂? 难道第二题没有按面试官心中理想的答案
: 在面试时给他写出来? 以后看来一定要注意时间.
: 1. two sum
: 一开始根据题目理解以为是排好序的数组, 于是从两头开始找:
: boolean twoSum(int[] nums, int sum){
: if(nums==null || nums.length<2)
: return false;
: int low = 0, high = nums.length-1;
: while(low
avatar
w*n
10
第二题是不是可以直接两个pointer扫过去o1的空间复杂度
[在 ppy (ppy) 的大作中提到:]
:店面是两个中国人,一开始知道是国人还比较欣喜. 结果证明完全不是这么回事,反而
感觉很严格,最终挂了. 请大家分析下为啥挂? 难道第二题没有按面试官心中理想的答案
:在面试时给他写出来? 以后看来一定要注意时间.
:...........
avatar
r*3
11
第二题面试官意思是不是希望你加个判断 比如如果当前最小距离是1的话 那么我后面
都不用搜了
avatar
p*y
12
距离不一定1啊 多少都可能

【在 r*****3 的大作中提到】
: 第二题面试官意思是不是希望你加个判断 比如如果当前最小距离是1的话 那么我后面
: 都不用搜了

avatar
r*e
13
楼主你挂得不冤。我是面试官也会挂掉你的。
1)数组是否排序要提前问面试官,自己想当然属于lacking communication
然后面试官在你声明low 与high 两个变量时候没有提醒你么?还是说你没有提前跟面
试官说你的方法??
2)速度不够快。否则第二题即使只有15分钟也能写个大概的。
3)如果楼主不服,我们现在来说代码
1:if(nums==null || nums.length<2) return false;
这里可能是需要抛出异常的 throw new NullPointerException();
2:if( (nums[low]+nums[high]) == sum ){ return true;}。。。
更好点的办法是在循环外面声明一个变量temp,temp = nums[low]+nums[high]
否则每次循环都得多算一次。
3.HashMap map = new HashMap();
应该写成Map map = new HashMap<>();这样可以显示你理解java
中的多态
4.第二道题根本不需要Map来储存位置的。你只需要对每个关键词各保留一个位置即可
。从list的末尾往前遍历,若发现关键词,更新位置,计算距离。若距离为最小,则保
留。
改一下:还是需要的,不过可以在Constructor实现。
5. strs = new String[words.size()];
for(int i=0; istrs[i] = words.get(i);
为啥要再建立一个数组??这个数组跟已有的List没有区别啊?然后一定要建立一个新
数组的话,为何要遍历一遍么?List有toArray这个方法啊?然后一定要遍历的话,为
何要用get()呢?如果原有List是LinkedList呢?
6. if(map.containsKey(strs[i])){
list = map.get(strs[i]);
}else{
list = new ArrayList();
}
list.add(i);
map.put(strs[i], list);
最后一句会造成重复操作。
也就这些了。希望楼主在不爽之后能多多练习,早拿offer
avatar
p*y
14
应该就是这个原因 要不constructor函数实在没用. 看来真是做到标准答案才行

constructor

【在 g********r 的大作中提到】
: 请问第二题,用hashmap的话,不是要事先建立好hashmap么?也就是说在constructor
: 里面建立好,然后每次调用计算diat的函数的时候,直接lookup hashmap,然后用
: index table算。LZ为什么要把建立hashmap的code放到计算dist的函数里呢?

avatar
g*r
15
我觉得这些细节面试官不会在意的。LZ的问题是没有理解第二题面试官的题意:为了避
免每一次计算dist go through entire list,把O(n)复杂度转移到构造函数里面。
这样的话,就解决了heavy request on computing dist.
包括twosum那题啊,两个函数:store(), twosum(), 取决于哪个调用更频繁,
algorithm也不一样。比如bool twosum()调用频繁,那么就应该存key为sum的map。这
时,store的复杂度就升为O(n)。

【在 r*******e 的大作中提到】
: 楼主你挂得不冤。我是面试官也会挂掉你的。
: 1)数组是否排序要提前问面试官,自己想当然属于lacking communication
: 然后面试官在你声明low 与high 两个变量时候没有提醒你么?还是说你没有提前跟面
: 试官说你的方法??
: 2)速度不够快。否则第二题即使只有15分钟也能写个大概的。
: 3)如果楼主不服,我们现在来说代码
: 1:if(nums==null || nums.length<2) return false;
: 这里可能是需要抛出异常的 throw new NullPointerException();
: 2:if( (nums[low]+nums[high]) == sum ){ return true;}。。。
: 更好点的办法是在循环外面声明一个变量temp,temp = nums[low]+nums[high]

avatar
r*e
16
你说得在理,确实应该在constructor 实现。

【在 g********r 的大作中提到】
: 我觉得这些细节面试官不会在意的。LZ的问题是没有理解第二题面试官的题意:为了避
: 免每一次计算dist go through entire list,把O(n)复杂度转移到构造函数里面。
: 这样的话,就解决了heavy request on computing dist.
: 包括twosum那题啊,两个函数:store(), twosum(), 取决于哪个调用更频繁,
: algorithm也不一样。比如bool twosum()调用频繁,那么就应该存key为sum的map。这
: 时,store的复杂度就升为O(n)。

avatar
g*r
17
LZ你two sum那题双指针O(nlogn)的code,面试官就让你写到底了啊?能描述一下当时
的情形吗?因为这题完全不是考two pointer的,很好奇面试官为什么没有拦住你,你
写code之前跟他交流了你的双指针的想法了没有?

【在 p*y 的大作中提到】
: 应该就是这个原因 要不constructor函数实在没用. 看来真是做到标准答案才行
:
: constructor

avatar
L*1
18
请问LZ,说的是CC150具体哪个题啊?怎么感觉像LC的word ladder?谢谢!
avatar
l*a
19

发信人: reclapple (加菲鲸), 信区: JobHunting
标 题: Re: 最新L家面经
发信站: BBS 未名空间站 (Mon Nov 10 19:41:25 2014, 美东)
楼主你挂得不冤。我是面试官也会挂掉你的。
1)数组是否排序要提前问面试官,自己想当然属于lacking communication
然后面试官在你声明low 与high 两个变量时候没有提醒你么?还是说你没有提前跟面
试官说你的方法??
2)速度不够快。否则第二题即使只有15分钟也能写个大概的。
3)如果楼主不服,我们现在来说代码
1:if(nums==null || nums.length<2) return false;
这里可能是需要抛出异常的 throw new NullPointerException();
==> 这个真的需要吗?我认为不需要吧。
3.HashMap map = new HashMap();
应该写成Map map = new HashMap<>();这样可以显示你理解java
中的多态
==> 这个题真的需要Map吗?HashSet足够了吧?没看见存那个index有什么意义
4.第二道题根本不需要Map来储存位置的。你只需要对每个关键词各保留一个位置即可
。从list的末尾往前遍历,若发现关键词,更新位置,计算距离。若距离为最小,则保
留。
改一下:还是需要的,不过可以在Constructor实现。
==> 如果只调用一次,map的意义不大
如果函数调用无数次,还是用Map>记下每个string的
index
然后取出两个list做compare好一些

【在 r*******e 的大作中提到】
: 楼主你挂得不冤。我是面试官也会挂掉你的。
: 1)数组是否排序要提前问面试官,自己想当然属于lacking communication
: 然后面试官在你声明low 与high 两个变量时候没有提醒你么?还是说你没有提前跟面
: 试官说你的方法??
: 2)速度不够快。否则第二题即使只有15分钟也能写个大概的。
: 3)如果楼主不服,我们现在来说代码
: 1:if(nums==null || nums.length<2) return false;
: 这里可能是需要抛出异常的 throw new NullPointerException();
: 2:if( (nums[low]+nums[high]) == sum ){ return true;}。。。
: 更好点的办法是在循环外面声明一个变量temp,temp = nums[low]+nums[high]

avatar
l*a
20

你这两个函数说得是别的需求把
LZ这题目不是就要求写一个

【在 g********r 的大作中提到】
: 我觉得这些细节面试官不会在意的。LZ的问题是没有理解第二题面试官的题意:为了避
: 免每一次计算dist go through entire list,把O(n)复杂度转移到构造函数里面。
: 这样的话,就解决了heavy request on computing dist.
: 包括twosum那题啊,两个函数:store(), twosum(), 取决于哪个调用更频繁,
: algorithm也不一样。比如bool twosum()调用频繁,那么就应该存key为sum的map。这
: 时,store的复杂度就升为O(n)。

avatar
l*g
21
第一题应该是leetcode上头因为输出是要index所以才用了Map来做
lz这道只判断是否exist的,确实只要Set就够了
avatar
y*i
22
2 sum这种题目是不是一定要写的bug free一次成型

【在 p*y 的大作中提到】
: 店面是两个中国人,一开始知道是国人还比较欣喜. 结果证明完全不是这么回事,反而感
: 觉很严格,最终挂了. 请大家分析下为啥挂? 难道第二题没有按面试官心中理想的答案
: 在面试时给他写出来? 以后看来一定要注意时间.
: 1. two sum
: 一开始根据题目理解以为是排好序的数组, 于是从两头开始找:
: boolean twoSum(int[] nums, int sum){
: if(nums==null || nums.length<2)
: return false;
: int low = 0, high = nums.length-1;
: while(low
avatar
p*y
23
这次遇到到得面试官很少说话 所以很多时候我代码写好之后再提出问题 包括第二个题
我也是用两个index解法写完之后才提示我 导致时间不够. 看来以后一定得注意面试官
的意图和题目的细节

【在 g********r 的大作中提到】
: 我觉得这些细节面试官不会在意的。LZ的问题是没有理解第二题面试官的题意:为了避
: 免每一次计算dist go through entire list,把O(n)复杂度转移到构造函数里面。
: 这样的话,就解决了heavy request on computing dist.
: 包括twosum那题啊,两个函数:store(), twosum(), 取决于哪个调用更频繁,
: algorithm也不一样。比如bool twosum()调用频繁,那么就应该存key为sum的map。这
: 时,store的复杂度就升为O(n)。

avatar
l*a
24
这个题目如果还写出很多问题的话人家真的没法给你过

【在 y*********i 的大作中提到】
: 2 sum这种题目是不是一定要写的bug free一次成型
avatar
r*j
25
这样是不是可以?
public int distance (String[] words, String wordOne, String wordTwo) {
if (wordOne.equals(wordTwo)) {
return 0;
}
int minDistance = Integer.MAX_VALUE;
int lastOne = -1;
int lastTwo = -1;

for (int i = 0; i < words.length; i++) {
if (words[i].equals(wordOne)) {
if (lastTwo != -1) {
int curMin = i - lastTwo;
minDistance = Math.min(minDistance, curMin);
}
lastOne = i;
} else if (words[i].equals(wordTwo)) {
if (lastOne != -1) {
int curMin = i - lastOne;
minDistance = Math.min(minDistance, curMin);
}
lastTwo = i;
}
}
return minDistance;
}
avatar
r*e
26
有bug

//Need to check if words contains wordOne

【在 r******j 的大作中提到】
: 这样是不是可以?
: public int distance (String[] words, String wordOne, String wordTwo) {
: if (wordOne.equals(wordTwo)) {
: return 0;
: }
: int minDistance = Integer.MAX_VALUE;
: int lastOne = -1;
: int lastTwo = -1;
:
: for (int i = 0; i < words.length; i++) {

avatar
r*j
27
刚才发的时候还想at一下你,让你给点意见,你给楼主提的建议都非常好,忠言逆耳。
。。
有bug啊。。。丢人了。。。我查查!!

【在 r*******e 的大作中提到】
: 有bug
:
: //Need to check if words contains wordOne

avatar
r*j
28
哦!其实刚才我想这个问题了,没想出太好看的解决方案,似乎还是给扫一遍,就没写
。。。就当面试官告诉我都直接返回0就好了。。。哈哈

【在 r*******e 的大作中提到】
: 有bug
:
: //Need to check if words contains wordOne

avatar
p*y
29
1。没理清要求匆忙写代码
2。发现问题后又匆忙再写个代码
不好帮啊,on site给了也很难过。不过如果我是面试官,会给点feedback.

"" low="0," high="nums.length-1;" :="">="">

【在 p*y 的大作中提到】
: 店面是两个中国人,一开始知道是国人还比较欣喜. 结果证明完全不是这么回事,反而感
: 觉很严格,最终挂了. 请大家分析下为啥挂? 难道第二题没有按面试官心中理想的答案
: 在面试时给他写出来? 以后看来一定要注意时间.
: 1. two sum
: 一开始根据题目理解以为是排好序的数组, 于是从两头开始找:
: boolean twoSum(int[] nums, int sum){
: if(nums==null || nums.length<2)
: return false;
: int low = 0, high = nums.length-1;
: while(low
avatar
c*8
30

可能bar就这样
我以前面L的时候,两个店面都是45分钟3题最优解+coding出来无bug的节奏
因为都是原题,没有特殊题,想的快写的快,都是第二天通知下一步
结果onsite挂了,感觉onsite重心在扯皮(经验)不是coding

【在 p*y 的大作中提到】
: 店面是两个中国人,一开始知道是国人还比较欣喜. 结果证明完全不是这么回事,反而感
: 觉很严格,最终挂了. 请大家分析下为啥挂? 难道第二题没有按面试官心中理想的答案
: 在面试时给他写出来? 以后看来一定要注意时间.
: 1. two sum
: 一开始根据题目理解以为是排好序的数组, 于是从两头开始找:
: boolean twoSum(int[] nums, int sum){
: if(nums==null || nums.length<2)
: return false;
: int low = 0, high = nums.length-1;
: while(low
avatar
y*a
31

这个算法,如果 document 大一点不是很慢么?真要快的话,就把所有的处理都放在
constructor 里面。用 map 存两个词的index 差最小值。

【在 r******j 的大作中提到】
: 这样是不是可以?
: public int distance (String[] words, String wordOne, String wordTwo) {
: if (wordOne.equals(wordTwo)) {
: return 0;
: }
: int minDistance = Integer.MAX_VALUE;
: int lastOne = -1;
: int lastTwo = -1;
:
: for (int i = 0; i < words.length; i++) {

avatar
g*e
32
没有abs()

【在 r******j 的大作中提到】
: 这样是不是可以?
: public int distance (String[] words, String wordOne, String wordTwo) {
: if (wordOne.equals(wordTwo)) {
: return 0;
: }
: int minDistance = Integer.MAX_VALUE;
: int lastOne = -1;
: int lastTwo = -1;
:
: for (int i = 0; i < words.length; i++) {

avatar
g*e
33
已经找到当前str1,str2的最小距离了,就不用继续找了

【在 p*y 的大作中提到】
: 距离不一定1啊 多少都可能
avatar
y*a
34
class MinDist{
Map dist;
String separator;
int minDist(String s1, String s2, Map>map) {
dist=new HashMap<>();
Listl1,l2;
if ((l1=map.get(s1))==null||(l2=map.get(s2))==null) return -1;
int rel=Integer.MAX_VALUE;
for(int i1=0,i2=0;i1int v1=l1.get(i1),v2=l2.get(i2),dif=v1-v2;
rel=Math.min(rel,Math.abs(dif));
if (rel==1) return 0;
else if (dif<0) ++i1;
else ++i2;
}
return rel;
}
public MinDist(List doc, String separator) {
Map> map=new HashMap<>();
int k=0;
for (String s:doc) {
Listlist=map.get(s);
if (list==null) map.put(s,list=new ArrayList<>());
list.add(k++);
}
String[]keys=map.keySet().toArray(new String[0]);
for (int i=0,n=keys.length;ifor (int j=i+1;jString s1=keys[i],s2=keys[j],key;
if (s1.compareTo(s2)<=0) key=s1+s2;
else key=s2+s1;
dist.put(key,minDist(keys[i],keys[j],map));
}
this.separator=separator;
}
public MinDist(Listdoc) {this(doc," ");}
public int getDist(String word1, String word2) {
Integer val;
if (word1.compareTo(word2)<=0) val=dist.get(word1+separator+word2);
else val=dist.get(word2+separator+word1);
return val==null?-1:val;
}
}
avatar
m*1
35
mark
avatar
s*m
36
第二题用hashmap就可以避免面试官的疑问吗?
---------------------
写好后提示要是 cat dog cloud dog dog dog......,即后面有million个dog, 是否不
用比较整个文章.

constructor

【在 g********r 的大作中提到】
: 请问第二题,用hashmap的话,不是要事先建立好hashmap么?也就是说在constructor
: 里面建立好,然后每次调用计算diat的函数的时候,直接lookup hashmap,然后用
: index table算。LZ为什么要把建立hashmap的code放到计算dist的函数里呢?

avatar
e*c
37
没有code是完美的,精益求精是好事。 可能运气不好,碰到的人太挑剔,相互看不对
眼。
avatar
x*6
38
第二题是l家电面常考题啊, 我记得当时是要求把存储word位置信息(map)和找出两
个words最小距离分开写出来。找出两个words最小距离是可以o(n)实现的。
avatar
s*r
39
对,code不够efficient,有些没必要的步骤和变量

constructor

【在 g********r 的大作中提到】
: 请问第二题,用hashmap的话,不是要事先建立好hashmap么?也就是说在constructor
: 里面建立好,然后每次调用计算diat的函数的时候,直接lookup hashmap,然后用
: index table算。LZ为什么要把建立hashmap的code放到计算dist的函数里呢?

avatar
s*a
40
按说C++如果nums--null 判断为真的话后面的||就不会再看了吧。

【在 r*******e 的大作中提到】
: 楼主你挂得不冤。我是面试官也会挂掉你的。
: 1)数组是否排序要提前问面试官,自己想当然属于lacking communication
: 然后面试官在你声明low 与high 两个变量时候没有提醒你么?还是说你没有提前跟面
: 试官说你的方法??
: 2)速度不够快。否则第二题即使只有15分钟也能写个大概的。
: 3)如果楼主不服,我们现在来说代码
: 1:if(nums==null || nums.length<2) return false;
: 这里可能是需要抛出异常的 throw new NullPointerException();
: 2:if( (nums[low]+nums[high]) == sum ){ return true;}。。。
: 更好点的办法是在循环外面声明一个变量temp,temp = nums[low]+nums[high]

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。