s********l 发帖数: 998 | 1 你这data存的是到目前为止的数字?
如果定义root为0层 那么
比如第三层的某个节点data存的 是808
这样子?
“非叶子上是null”?
你这是说 每个节点 还有个char * ? |
|
Z*****Z 发帖数: 723 | 2 是这样的,每个节点有个char digit成员,还有个String data成员,digit存的是数字
,data存的是数据:) |
|
I********T 发帖数: 22 | 3 电话本问题我是用trie,名字是jack的就把jack,ack,ck,k都存起来,树的一个节点
只存一个字母。 local: static, global/static: data segment |
|
p*********w 发帖数: 606 | 4 本来想一起把我的答案发了的,结果被老婆拽去gym。现在发一下。
1. atoi
当时写的程序很不细致,没有判断正负,字符串中字符不为数字,字符串过长越界等情
况。写完后想起来了,然后口头补充了一下,面试官说知道我的意思就直接到下一道题
了。
2. 用递归
bool Equal(Node* a, Node* b){
if(a == NULL && b != NULL) || (a != NULL && b == NULL)
return false;
if(a == NULL && b == NULL) return true;
return (Equal(a->left, b->left) && Equal(a->right, b->right)) || (Equal(a-
>left, b->right) && Equal(a->right == b->left))
}
因为一个函数调用四次自己,树有log(n)层,所以复杂度是4^(log(n)) = n^2。我复杂
度这块比较弱,在他的提示下写出来的。
然后假如左右子树需要交换的情况下,用变量保存总共要交换几次... 阅读全帖 |
|
g*********s 发帖数: 1782 | 5 本来想一起把我的答案发了的,结果被老婆拽去gym。现在发一下。
2. 用递归
因为一个函数调用四次自己,树有log(n)层,所以复杂度是4^(log(n)) = n^2。我复杂
度这块比较弱,在他的提示下写出来的。
how u know tree has lgN level? the worse case could be N.
然后假如左右子树需要交换的情况下,用变量保存总共要交换几次。我用一个引用来保
存,把代码最后一行加几个if语句,在需要交换左右子树的情况下变量自增。但他似乎
不满意,给我写了两个引用,我没懂他什么意思。
why u need a variable to keep the swap? confused here.
it seems this problem has an easy version and a complicated version.
easy version not considering left/right sub-tree swapping. in this case,
you can traverse each tree twice (i... 阅读全帖 |
|
r*****b 发帖数: 8 | 6 给a list of number, 返回前top K个:用min-heap?不过如果内存不够怎么办啊?
找两个链表的交集,具体是什么意思?
算阶乘:
可以事先存好一些值,比如存好K!, 当N>K时,就只要计算N*(N-1)*...*(K+1)*(K!)
这样做可以么?
设计电话簿的题:为什么要用suffix tree啊? |
|
A*********3 发帖数: 70 | 7
可以事先存好一些值,比如存好K!, 当N>K时,就只要计算N*(N-1)*...*(K+1)*(K!)
我也是这么回答的
suffix tree-因为是按照姓名存储的,比如Mary就一个字母一个树节点存储,a是M的
孩子 |
|
c****m 发帖数: 179 | 8
可以通过移位转化成255以及更小的,
我觉得存距离那个可以用一维数组表示那个三角阵。
所以想来考点是如何算index?
至于用spanning tree的想法,n-1的空间。但是算距离的时候没有角度信息应该没法算
出来任意两点
的距离吧。而且如果从这个角度说,还不如只存城市的坐标,现算距离。 |
|
R***i 发帖数: 78 | 9 一个问apache一个什么log里面如何找前10个频率最高的ip
然后说如果前k个呢
这道题解法是用Hashtable遍历存frequency,最后再倒到max heap吗?
还是直接用max heap来存? |
|
h**********d 发帖数: 4313 | 10 我是先遍历的同时,用一个hashset记录已经创建的TreeNode,用于deserialize;另一
个hashmap记录parent,child信息,key存child,value存parent。
最后比较hashset和hashMap的keyset,hashmap应该少一个节点,就是root节点,原因
是二叉数root没有parent |
|
m****i 发帖数: 650 | 11 我是先遍历的同时,用一个hashset记录已经创建的TreeNode,用于deserialize;另一
个hashmap记录parent,child信息,key存child,value存parent。
最后比较hashset和hashMap的keyset,hashmap应该少一个节点,就是root节点,原因
是二叉数root没有parent
=========================
这个hashset应该是hashmp吧, key是A,B or H..., value是建立的TreeNode. 不然怎
么trace相应的值已经建了TreeNode? i.e (A, TreeNode(A))pair. 如果用hashset,
是 值存放TreeNode(A)是一个pointor or reference,
以后无法Trace back! |
|
m****i 发帖数: 650 | 12 我是先遍历的同时,用一个hashset记录已经创建的TreeNode,用于deserialize;另一
个hashmap记录parent,child信息,key存child,value存parent。
最后比较hashset和hashMap的keyset,hashmap应该少一个节点,就是root节点,原因
是二叉数root没有parent
=========================
这个hashset应该是hashmp吧, key是A,B or H..., value是建立的TreeNode. 不然怎
么trace相应的值已经建了TreeNode? i.e (A, TreeNode(A))pair. 如果用hashset,
是 值存放TreeNode(A)是一个pointor or reference,
以后无法Trace back! |
|
m****i 发帖数: 650 | 13 我是先遍历的同时,用一个hashset记录已经创建的TreeNode,用于deserialize;另一
个hashmap记录parent,child信息,key存child,value存parent。
最后比较hashset和hashMap的keyset,hashmap应该少一个节点,就是root节点,原因
是二叉数root没有parent
=========================
这个hashset应该是hashmp吧, key是A,B or H..., value是建立的TreeNode. 不然怎
么trace相应的值已经建了TreeNode? i.e (A, TreeNode(A))pair. 如果用hashset,
是 值存放TreeNode(A)是一个pointor or reference,
以后无法Trace back! |
|
m****i 发帖数: 650 | 14 我是先遍历的同时,用一个hashset记录已经创建的TreeNode,用于deserialize;另一
个hashmap记录parent,child信息,key存child,value存parent。
最后比较hashset和hashMap的keyset,hashmap应该少一个节点,就是root节点,原因
是二叉数root没有parent
=========================
这个hashset应该是hashmp吧, key是A,B or H..., value是建立的TreeNode. 不然怎
么trace相应的值已经建了TreeNode? i.e (A, TreeNode(A))pair. 如果用hashset,
是 值存放TreeNode(A)是一个pointor or reference,
以后无法Trace back! |
|
P**********c 发帖数: 3417 | 15 第12题vector能存多少数是有上限的吧,毕竟它的size()返回值其实是
unsigned int. 存成vector的好处是什么呢?
the
called
all
890 |
|
P**********c 发帖数: 3417 | 16 第12题vector能存多少数是有上限的吧,毕竟它的size()返回值其实是
unsigned int. 存成vector的好处是什么呢?
the
called
all
890 |
|
g*****i 发帖数: 2162 | 17 电话号码那题看要求是不是用两个trie更好点,一个trie存用了的,一个trie存没用的. |
|
c**********6 发帖数: 105 | 18 面完就发上来了
第一次面大公司啊 好鸡冻 T____T
1. project
2. 上题:
i> 如何用一个方法返回多个值
ii> 如何check一个二叉树的节点的children互为镜像
简单吧
求各种推荐啊 Google, Facebook, Microsoft, Yahoo, Linkedin, Twitter
我答的是
1. i> 新建一个class,封装多个变量;
ii> 利用java参数传递是传递引用,可以直接修改变量值(这点和c++类似),而且同时还可以返回一个值;
iii> 利用java类库中的数据结构,比如说ArrayList。
2. i> recursive算法比较简单
boolean check(TreeNode root) {
//case 1: root == null
if(root == null) return true;
//case 2: left == right == null;
if(root.left == null && root.right == null) r... 阅读全帖 |
|
r******a 发帖数: 32 | 19 lz小弱,各位看官见笑
第一轮,binary search tree。
写两个function first(),next()。用iterative method。
first() 返回以当前结点为根的子树中的最小的那个元素
next()返回in order 遍历序的下一个结点
//////////////////////////
我思考的时候总给hints...., 我是这么答的
first() ,如果有左儿子,depth first search直到叶子节点,返回叶子节点
没有左儿子,返回他自己
next(), 如果有右儿子,对右儿子调用first()
没有右儿子,回溯,如果parent 是grandparent的左儿子,返回
grandparent (1)
如果parent是grandparent的右儿子,一直
回溯,直到满足(1)或者到根节点
第二轮, remove duplicate entries
assume 一个text file中的每一行被看成一个entr... 阅读全帖 |
|
a*****g 发帖数: 110 | 20 来自主题: JobHunting版 - 面经&感想 其实中间的结果就可以存进新的数组里了
然后把每次的结果加进去
因为‘B的每一个digit * A’也可能是很大
最后一起加会有overflow
所以需要2个carrier 一个存积的 一个存和的 |
|
|
|
z********c 发帖数: 72 | 23 不知道什么要求。。我直接写的搜索然后优化成DP,他说很好
merge写了,那一场45分钟全部用来搞这个题了。。。。
补充一下电面题把:
F:
1. int strstr (const char *haystack, const char *needle),要你实现,
bruteforce就行
2. int strstr (const char *haystack[], const char *needle),意思就是haystack
太长了,然后一个串存不下,变成存个数组里, 把他们concatenate 以后就是
haystack,还是一样的要求,要你实现,不能有额外空间
3. 给一组字符串,按anagram分组,输出
G:
1. 找到ll里最后k个节点,把他们放到前面来
2. 那题在板上说过,一个iterator,有next和hasNext,现在要你加个wrapper,使得
支持peek操作
不少了哥。。。我问了那么多人绝对我写的码比他们都多。。 |
|
l*********8 发帖数: 4642 | 24 1面第二道,我的想法是:
首先对每个节点,找到它的所有祖先,并和距离一起存到hash table中, 距离超过k就
不用存。 对一个节点平均是O(min(k,logN)) time. 所有节点O(N * min(k,logN))
time
然后对于每个pair of nodes, 利用第一步生成的hash tables来检查最短距离是否是k
。 每个pair平均 O(min(k,logN))时间。 N*(N-1)/2个pair共 O(N^2 * min(k,logN))
时间 |
|
l*********8 发帖数: 4642 | 25 1面第二道,我的想法是:
首先对每个节点,找到它的所有祖先,并和距离一起存到hash table中, 距离超过k就
不用存。 对一个节点平均是O(min(k,logN)) time. 所有节点O(N * min(k,logN))
time
然后对于每个pair of nodes, 利用第一步生成的hash tables来检查最短距离是否是k
。 每个pair平均 O(min(k,logN))时间。 N*(N-1)/2个pair共 O(N^2 * min(k,logN))
时间 |
|
M**********7 发帖数: 378 | 26 就是上面的apollopffd 讲的。
哈希表存数据保证简单存取。
用一个队列存时间和元素。
存取就只看哈希表。
存取的时候注意根据需要要维护下计时器(比如第一个或者最后一个)。
然后计时器到时候清除到期元素在哈希表以及队列。
注意多线程情况。 |
|
R********y 发帖数: 88 | 27 三面的题是order statistic,如果存数组,有O(n)-expected time的解法,如果存二
叉树,有O(log n)解法 |
|
R********y 发帖数: 88 | 28 三面的题是order statistic,如果存数组,有O(n)-expected time的解法,如果存二
叉树,有O(log n)解法 |
|
c***s 发帖数: 192 | 29 Twitter的最后一题应该是估算吧:
cache的读写时间大概是几个时钟周期,也就是1ns左右。
RAM大概比cache慢一个量级,那读一个字节就是10ns左右,
假如数据所在页面的地址不在TLB里,那就要至少增加一次RAM的读写,时间可能就是几
十纳秒。
Disk的读写就是纯估算了,假设一个机械硬盘顺序读的速度100MB/s,
那么读一个字节的时间大概是 4096 / (100 * 10^6) s = 40 us (假设一个block是
4096字节,读操作是瓶颈).
如果磁头不在数据所在的磁道上,那还需要加上一个磁头移动时间。
200GB的文件应该是问文件头是怎么存的,如果是类Unix的i-node文件系统(假设一个
block是4096字节),
应该是一个block里有一个数组,数组的前面几个值保存文件信息和指向文件头几个
block (~10 * 4KB = 40 KB)。
后面3个值,一个指向一个block,这个block保存接下来文件数据存的地址。(512 * 4
KB = 2 MB)
倒数第二个值指向另一个block,这个block指向另一堆block (512 * 2... 阅读全帖 |
|
c***s 发帖数: 192 | 30 Twitter的最后一题应该是估算吧:
cache的读写时间大概是几个时钟周期,也就是1ns左右。
RAM大概比cache慢一个量级,那读一个字节就是10ns左右,
假如数据所在页面的地址不在TLB里,那就要至少增加一次RAM的读写,时间可能就是几
十纳秒。
Disk的读写就是纯估算了,假设一个机械硬盘顺序读的速度100MB/s,
那么读一个字节的时间大概是 4096 / (100 * 10^6) s = 40 us (假设一个block是
4096字节,读操作是瓶颈).
如果磁头不在数据所在的磁道上,那还需要加上一个磁头移动时间。
200GB的文件应该是问文件头是怎么存的,如果是类Unix的i-node文件系统(假设一个
block是4096字节),
应该是一个block里有一个数组,数组的前面几个值保存文件信息和指向文件头几个
block (~10 * 4KB = 40 KB)。
后面3个值,一个指向一个block,这个block保存接下来文件数据存的地址。(512 * 4
KB = 2 MB)
倒数第二个值指向另一个block,这个block指向另一堆block (512 * 2... 阅读全帖 |
|
p*****2 发帖数: 21240 | 31
就是这样。结果还不能输出,要存起来,遇到过的余数也要用个hashtable存起来,并
且指向结果的位置。一旦发现有重复的。从这个位置开始画(),之前的直接输出。 |
|
b*****n 发帖数: 618 | 32 来自主题: JobHunting版 - RF 面经 姑且称为RF吧
申请的是fresh grad职位,2月底第一次跟hr联系到这个周拿到offer,中间经历了
online code test,onsite和一次电面。
好像不少人对他家的code test比较感兴趣,4个小时两道题,每个人遇到的题目可能不
一样,
第一题很简单,主要考察code质量,第二题稍微难一点,每个题目的要求都很详细要仔
细看,还有详细的提示也要注意。
我遇到的题:
1. 一个矩阵,从指定格子向右发射激光,每个格子有以下几种可能:激光直接穿过,
或者改变激光方向(4个方向)
问激光射出矩阵之前一共经过了多少格子,如果死循环了就输出-1
2. 一堆racer,每个racer有出发时间和到达时间,计算每个racer的score,规则如下
:score = 所有出发比自己晚但是到达比自己早的racer数量之和,(所有的出发时间
和到达时间没有重复的)要求时间复杂度
code test过了之后我直接就安排onsite了,onsite本来安排6个人但实际上只面了5个
,题目如下:
1. 两个不一样长度的sorted array,求median。
leetcod... 阅读全帖 |
|
b*****n 发帖数: 618 | 33 来自主题: JobHunting版 - RF 面经 姑且称为RF吧
申请的是fresh grad职位,2月底第一次跟hr联系到这个周拿到offer,中间经历了
online code test,onsite和一次电面。
好像不少人对他家的code test比较感兴趣,4个小时两道题,每个人遇到的题目可能不
一样,
第一题很简单,主要考察code质量,第二题稍微难一点,每个题目的要求都很详细要仔
细看,还有详细的提示也要注意。
我遇到的题:
1. 一个矩阵,从指定格子向右发射激光,每个格子有以下几种可能:激光直接穿过,
或者改变激光方向(4个方向)
问激光射出矩阵之前一共经过了多少格子,如果死循环了就输出-1
2. 一堆racer,每个racer有出发时间和到达时间,计算每个racer的score,规则如下
:score = 所有出发比自己晚但是到达比自己早的racer数量之和,(所有的出发时间
和到达时间没有重复的)要求时间复杂度
code test过了之后我直接就安排onsite了,onsite本来安排6个人但实际上只面了5个
,题目如下:
1. 两个不一样长度的sorted array,求median。
leetcod... 阅读全帖 |
|
w********g 发帖数: 106 | 34 来自主题: JobHunting版 - 小公司面经 knowledge题和coding都很常见,就不说了。
但是有个题我不知道考点是什么:
已给出全局变量
struct val {
char *s;
};
struct val input[100];//已事先存好100个val
struct val output[100];//已事先存好100个val,但都是任意赋值
char buffer[足够大];
要求写两个函数
InputToBuffer(void *buffer, struct val input)
BufferToOutput(struct val output, void *buffer)
第一个函数把input放到buffer里,第二个函数反之。
要求把两个函数依次执行完之后,input和output相等。
题目虽然稍微有些繁琐,但是其实意思很明确。
原题特意说过不必考虑内存不够用、字符串与结构体不valid的情况。
我不明白这题考点是什么,谁给我讲讲?
我的做法就是定义一个char *b = (char *)buffer,
然后两个函数里分别
memcpy(b, input[i], size+1)
memcpy(o... 阅读全帖 |
|
A***g 发帖数: 1816 | 35 面试我的是个中国哥们儿,从姓上看是。如果这个哥们也上这里,对不起啦,我漏你的
题了,不过看在你一再给我提示上,估计你也愿意我帮助一下中国的兄弟姐妹们。
其实题目很简单,问题出在我没有走进人家的思路。
他让我写一个Linkedlist,每个node都是只有两种状态0/1,然后用它来写个class,模
拟自然数,能够完成加乘以及判断大小等运算。
我纠结在什么地方呢?他没有直接说用linklist of 0/1,而是说不许用这个那个等等
,反正是把所有能有的路都堵死,我是好久没有做这类猜测出题者心思的题目了,完全
不能从日常工作和一般的算法题里走出来,就是死也猜不出该用什么来存这个,因为都
不能用。结果好不容易猜出来是用变量是否null来存0/1,可没时间再猜该用
linkedlist了。
那个哥们还是很照顾了,一再提示可以用变量,可我反应太慢都联想问题说到机器码和
寄存器去了就是想不到。
最后放了一马,允许用数组写,可也没有时间了,只好口述。
虽然其它部分都写了,还是不行了。 |
|
A***g 发帖数: 1816 | 36 面试我的是个中国哥们儿,从姓上看是。如果这个哥们也上这里,对不起啦,我漏你的
题了,不过看在你一再给我提示上,估计你也愿意我帮助一下中国的兄弟姐妹们。
其实题目很简单,问题出在我没有走进人家的思路。
他让我写一个Linkedlist,每个node都是只有两种状态0/1,然后用它来写个class,模
拟自然数,能够完成加乘以及判断大小等运算。
我纠结在什么地方呢?他没有直接说用linklist of 0/1,而是说不许用这个那个等等
,反正是把所有能有的路都堵死,我是好久没有做这类猜测出题者心思的题目了,完全
不能从日常工作和一般的算法题里走出来,就是死也猜不出该用什么来存这个,因为都
不能用。结果好不容易猜出来是用变量是否null来存0/1,可没时间再猜该用
linkedlist了。
那个哥们还是很照顾了,一再提示可以用变量,可我反应太慢都联想问题说到机器码和
寄存器去了就是想不到。
最后放了一马,允许用数组写,可也没有时间了,只好口述。
虽然其它部分都写了,还是不行了。 |
|
a*******n 发帖数: 112 | 37 上周面的,从早9点到晚5点,说好大概一周以内给消息,结果什么消息也没有,是不是
就是婉拒了?也罢,既然没有签什么nondisclosure agreement,我就贡献几道面试题
吧。
- 一个双向链表,带头尾指针,每个节点可能都有父节点和子节点,每个父子节点又是
一个链表。要求把它拍扁,顺序随意。
一开始说了一个类似DFS的算法,他说我的空间复杂度是O(N),我说递归的方法如果堆
栈空间也算的话确实是O(N),但他咬定我临时放节点的地方也是O(N),楞说我存节点需
要分配额外空间,我就很纳闷,这节点都已经是双向链表了,里面有next/prev,为毛
还需要分配O(N)的空间来存这些节点?坚持跟他讨论半天,把节点定义什么都给出来,
一点一点说明白,才证明是他理解有问题,幸好还算坚持,不然就被他带沟里去了。
当然这个算法有更好的解,既然不要求顺序,而且有头尾指针,每次把父子链表接到尾
巴后面就可以了。连递归都省了。
- 算sqrt()
我提出用牛顿法,刚画完坐标系就说不让用。原话是“newton's method is for
mathematics, please use comput... 阅读全帖 |
|
l********3 发帖数: 33 | 38 说的很对,当时我想用arraylist,或者先定好数组的长度,面试官制止了我,说是不
知道size。
如果强行用arraylist的话,插入中间的复杂度可能是O(n),这样的话总的复杂度O(N2)
,这样还不如全pop()出来,在排序,只要O(nlogn)
面试官的方法是:用queue存小的数,stack存大的数,先pop()一个数,再peek一下,
比较这两个数,如果pop的大,就代表肯定是quack的尾巴,反之肯定是头,然后插入
queue或者stack就行了。
对于有repeated number的话,我实在是没想出来怎么弄。坐等大神吧。
另外如何能更好的应对这种题目尼?谢谢 |
|
l********3 发帖数: 33 | 39 说的很对,当时我想用arraylist,或者先定好数组的长度,面试官制止了我,说是不
知道size。
如果强行用arraylist的话,插入中间的复杂度可能是O(n),这样的话总的复杂度O(N2)
,这样还不如全pop()出来,在排序,只要O(nlogn)
面试官的方法是:用queue存小的数,stack存大的数,先pop()一个数,再peek一下,
比较这两个数,如果pop的大,就代表肯定是quack的尾巴,反之肯定是头,然后插入
queue或者stack就行了。
对于有repeated number的话,我实在是没想出来怎么弄。坐等大神吧。
另外如何能更好的应对这种题目尼?谢谢 |
|
m*****n 发帖数: 2152 | 40 你这个还是brute force啊。
用bitset<62> key 更好一点吧,或者干脆用unsigned long key,存hash。
用unsigned int value存字长,然后按value排序,从最大开始loop。
如果字长小于sqrt(max),loop就可以停了。
这样的话,最差也是O(n*n*m),最好的话O(n*log(n)*m)。 |
|
b*******t 发帖数: 69 | 41 第二组第三题可以用leaf结点空儿子,比如左右儿子存后继结点,no extra space。
参考morris traversal。
最右可以放leaf左儿子处,这面只保存一个leaf就好
最左,leaf走右儿子,再走一次leaf但访问左儿子,这里存的是最右的结点
call |
|
l*********r 发帖数: 136 | 42 Hi, 下面是我当时的解法,如有不妥的地方请指正
首先,因为是两个integer做除法,所以不涉及无线不循环小数的问题,当然循环位可
能super long导致溢出,此处暂不考虑这种情况。
举个例子,1除以7:
除法 结果集 余数集
1 x 10 / 7 = 1 余 3
3 x 10 / 7 = 4 余 2
2 x 10 / 7 = 2 余 6
6 x 10 / 7 ...
...
循环,每次都用前一步得到的余数乘以10(如果除数大于10的话,这里需要乘以多个10
),然后除以除数,并用一个链表记录下余数,做完上面的三步之后,余数集(链表)
中应该存 3 -> 2 -> 6... 结果集(字符串)中存142...
当遇到相同余数的时候(请注意是余数集中出现duplicates,而不是结果集中),即可
判知有循环出现。循环位数就是链表中两个重复数字的距离,在相应位置插入括号即可。
array |
|
f*****u 发帖数: 308 | 43 1. 国男
2sum
数字有重复,比如如果sum是10,{2,2,2,8,8}里面算两个(2,8)pair。求pair总数。
Merge interval
对我的最后solution表示很满意。
2. 国男
stream of strings like this
"1 34 5 6"
"3 4 5 6 3"
"4 5 6 3 3"
...
每行是一个包含数字的string。去除所有数字完全重复的strings.比如这里的第二和第
三行数字完全相同,可以合并成一个。要求合并所有数字完全重复的strings。
最后表示对我的优化结果不满意。
3. 有点像东南亚或者拉美后裔,英文无口音
Reverse linkedlist
不断要求优化。
4. 欧洲人
写一个小游戏。MxN 的格子上有一条蛇,蛇头可以向前,左,右移动,撞到自己身体任
何部位或者撞到边界就算死。
5. 阿三
有N个node,每个都不停的向外发送timestamps,具体发送哪些timestamp是每个node决定
的,从其他node来说是随机的.现在要收集这些node发送的所有timestamp.如果某个
timestamp被... 阅读全帖 |
|
k**y 发帖数: 12 | 44 没有特别明白。
然后保持0-9出现的次数
--> 这整个int[10] 存到 hashset里面吗?
这跟multiset有什么关系?难道不是会看到同样的就更新一下counter就好了,不需要
把重复的set存进去?我觉得能用set的东西一定可以用map呀,map的value是0/1就够表
达set了,value是count就能表达multiset了 |
|
l*k 发帖数: 10 | 45 用一个hashtable 保持当前变量值(x,y,etc), 扫描的时候更新。
两个stack分别存变量和运算符。每次遇到非数字变量时从hashtable里替换存到变量
stack。
然后就好处理了。
当然,先得有个tokenizer和简单的parser。 |
|
s********g 发帖数: 92 | 46 用python写了下 30分钟完全搞不定啊 最后倒是test case都没问题了 用的stack 两个
要点 一是push stack之前要查是不是let 是的话先update hashtable 然后push空串到
stack里面 确保let先算
另一个是hashtable要对每次push存transaction 我是同步维护一个hashtable的stack
每次push 操作数的同时把当前hashtable的deepcopy也push了 下次pop的时候也pop出
上一级存的hashtable来 这样确保不同级的let赋值不会互相覆盖 |
|
l********r 发帖数: 7 | 47 每一片可以刷两种颜色,相临三片不能同色这题,组合数学还是别的递推?
1.离散化+线段树(多个值域记次数,query走到底求和),构造O(n),每次query O(
log n)
2.一个hashmap存所有边,一个邻接表存对数的边和数量。
删点O(n),其他O(1)
4.A)递归dfs,O(n) B和C)堆性质向上走,O(log n)
有啥猫腻么? |
|
d*****c 发帖数: 605 | 48 存hashset就好了,存sum(i,0).
然后用j在跑,得到target = sum(j,i) = sum(i,0) - sum(j,0),在hashset里面有没
有 sum(j,0) + target就好了啊 |
|
w*****h 发帖数: 423 | 49 湾区startup
第一个墨西哥哥们,很简单的valid soduku
第二个三姐,问了一个表达式是不是valid括号的问题,有{,[, (三种括号
用stack秒杀,然后followup说有million种括号咋办,我开始有点慌,连LRU都想到了
。后来发现million括号存到内存也就2M,就说用hashmap存括号,三姐说sounds good
后来就收到拒信,WTF! |
|
l****1 发帖数: 30 | 50 已跪。。。
电面:
在线写题,要求编译通过还要过测试。 题目大概意思是让我把一个二叉树不用栈就能
够遍历一遍。面试官人很好写的过程中还不断提示我。
onsite:
coding第一面让我实现一个词频统计,但是测试文件巨大,读啊读的不同的词就超了内
存了。结果面试官提醒我要注意存中间结果,所以是读一批,统计一批,然后写回文件
,然后反复这样做最终得到最后结果。
coding第二面让我实现一个parser可以解析给定的几种sql语句。这个我以前大概做过
然后就照着回忆实现了一
个。
design面让我设计一个类似uber的实时调度系统。面试官问得很细,手机怎么和server
通信,然后server拿到location怎么快速定位以及如何匹配车的。感觉我回答得不是很
理想。
后面还有behavior面试,就是问我一些项目经验啊,职业追求之类的。
面完回家路上hr就告诉我被据了。效率还是很高的,至少没有拖着拉着。我感觉可能就
是design没有面太好。唉,和心中理想的startup公司无缘啊~ |
|