m********c 发帖数: 105 | 1 上周末做了pure storage的interviewstreet的题目,总共两道题,30分钟,今天晚
上就收到了拒信,下面是题目。
第一题是Remove all elements from a linked list of integers that have value N
,就是要实现下面的函数
void removeNode(int val, LinkedList **list)。
题目不算难,但是我刚看到pointer to pointer 一下子没想出来怎么做,想了半天,
最后写出来了,test cases5个过了3个,另外两个后来想了想是估计是因为处理修改
list的时候出错。下面是我写的代码。
void removeNode(int val, LinkedList **list) {
LinkedList *prev = *list;
while (prev && prev->val == val)
prev = prev->next;
// 估计是这里出错了,提交的代码里是 list = &prev,这算修改了list,不是
修改了*list
*list = prev;
if (*list == NULL)
return;
LinkedList *next = prev->next;
while (next) {
if (next->val == val)
prev->next = next->next;
else
prev = next;
next = next->next;
}
}
第二道题目是说要在一个有序数组里,找到所有之差为D的两个元素。给了一个学生实
现的函数,但是他的代码有bug,让你找出错误,并改正。我的代码test cases5个全过
。我觉得这个题目应该是很简单,没有什么trick。 |
p****U 发帖数: 109 | 2 请问lz之前还做了10道选择题的online test么? |
s*****n 发帖数: 994 | 3 void removeNode(int val, LinkedList **list){
LinkedList* dummy = new LinkedList(0);
dummy->next = *list;
LinkedList* current = dummy;
while (current){
if (current->next){
if (current->next = val){
current->next = current->next->next;
}else{
current = current->next;
}
}else{
current = current->next;
}
}
*list = dummy->next;
delete dummy;
}
直没
N
【在 m********c 的大作中提到】 : 上周末做了pure storage的interviewstreet的题目,总共两道题,30分钟,今天晚 : 上就收到了拒信,下面是题目。 : 第一题是Remove all elements from a linked list of integers that have value N : ,就是要实现下面的函数 : void removeNode(int val, LinkedList **list)。 : 题目不算难,但是我刚看到pointer to pointer 一下子没想出来怎么做,想了半天, : 最后写出来了,test cases5个过了3个,另外两个后来想了想是估计是因为处理修改 : list的时候出错。下面是我写的代码。 : void removeNode(int val, LinkedList **list) { : LinkedList *prev = *list;
|
p****U 发帖数: 109 | 4 如果他要用双指针做参数, 还是用double pointer吧, 用 dummy head的话,感觉会
让interviewer 觉得理解指针不够透彻。
void removeNode(int val, ListNode **list) {
while(*list!=NULL){
if((*list)->val==val){
ListNode *next=(*list)->next;
delete *list;
*list=next;
}
else {
list=&(*list)->next;
}
}
} |
s*******s 发帖数: 103 | 5 跟我做的一模一样,不过我是用C写的。
没有C++...
前面还是10题简单题:
比如, 我想一个0到1000的数,只能回答你yes/no,用什么策略可以找到这个数,并且
猜的次数的worse case最小?最小值多少少。
其他忘了。 |
m********c 发帖数: 105 | 6 做了,我上网搜了搜,都是GRE的CS的题。。
【在 p****U 的大作中提到】 : 请问lz之前还做了10道选择题的online test么?
|
m********c 发帖数: 105 | 7 看到你的觉得自己写的确实不怎么地。。。
另外像这种情况需要在函数里面delete那些node吗?
【在 p****U 的大作中提到】 : 如果他要用双指针做参数, 还是用double pointer吧, 用 dummy head的话,感觉会 : 让interviewer 觉得理解指针不够透彻。 : void removeNode(int val, ListNode **list) { : while(*list!=NULL){ : if((*list)->val==val){ : ListNode *next=(*list)->next; : delete *list; : *list=next; : } : else {
|
b**********5 发帖数: 7881 | 8 你还是多练练题吧。 这种题, 做对了, 再去面FB
直没
N
【在 m********c 的大作中提到】 : 上周末做了pure storage的interviewstreet的题目,总共两道题,30分钟,今天晚 : 上就收到了拒信,下面是题目。 : 第一题是Remove all elements from a linked list of integers that have value N : ,就是要实现下面的函数 : void removeNode(int val, LinkedList **list)。 : 题目不算难,但是我刚看到pointer to pointer 一下子没想出来怎么做,想了半天, : 最后写出来了,test cases5个过了3个,另外两个后来想了想是估计是因为处理修改 : list的时候出错。下面是我写的代码。 : void removeNode(int val, LinkedList **list) { : LinkedList *prev = *list;
|
p****U 发帖数: 109 | 9 感觉他的test case 测试不到哈。 不delete没关系。 我上上周做的10道题现在,都没
消息。请问lz等了多久让做这个题的?
【在 m********c 的大作中提到】 : 看到你的觉得自己写的确实不怎么地。。。 : 另外像这种情况需要在函数里面delete那些node吗?
|
s*****n 发帖数: 994 | 10 这个有连起来吗?
【在 p****U 的大作中提到】 : 如果他要用双指针做参数, 还是用double pointer吧, 用 dummy head的话,感觉会 : 让interviewer 觉得理解指针不够透彻。 : void removeNode(int val, ListNode **list) { : while(*list!=NULL){ : if((*list)->val==val){ : ListNode *next=(*list)->next; : delete *list; : *list=next; : } : else {
|
|
|
m********c 发帖数: 105 | 11 我做了题以后,过了一周多没理我,我发邮件问了HR,然后HR说正在准备这个新题了,
然后又过了一个星期给我发过来的,上周四发过来的,不行你发邮件follow up一下
【在 p****U 的大作中提到】 : 感觉他的test case 测试不到哈。 不delete没关系。 我上上周做的10道题现在,都没 : 消息。请问lz等了多久让做这个题的?
|
s***e 发帖数: 403 | 12 说实话这些题目不难。
如果这样的题目都做不到你估计过不了onsite的。 |
m********c 发帖数: 105 | 13 上周末做了pure storage的interviewstreet的题目,总共两道题,30分钟,今天晚
上就收到了拒信,下面是题目。
第一题是Remove all elements from a linked list of integers that have value N
,就是要实现下面的函数
void removeNode(int val, LinkedList **list)。
题目不算难,但是我刚看到pointer to pointer 一下子没想出来怎么做,想了半天,
最后写出来了,test cases5个过了3个,另外两个后来想了想是估计是因为处理修改
list的时候出错。下面是我写的代码。
void removeNode(int val, LinkedList **list) {
LinkedList *prev = *list;
while (prev && prev->val == val)
prev = prev->next;
// 估计是这里出错了,提交的代码里是 list = &prev,这算修改了list,不是
修改了*list
*list = prev;
if (*list == NULL)
return;
LinkedList *next = prev->next;
while (next) {
if (next->val == val)
prev->next = next->next;
else
prev = next;
next = next->next;
}
}
第二道题目是说要在一个有序数组里,找到所有之差为D的两个元素。给了一个学生实
现的函数,但是他的代码有bug,让你找出错误,并改正。我的代码test cases5个全过
。我觉得这个题目应该是很简单,没有什么trick。 |
p****U 发帖数: 109 | 14 请问lz之前还做了10道选择题的online test么? |
s*****n 发帖数: 994 | 15 void removeNode(int val, LinkedList **list){
LinkedList* dummy = new LinkedList(0);
dummy->next = *list;
LinkedList* current = dummy;
while (current){
if (current->next){
if (current->next = val){
current->next = current->next->next;
}else{
current = current->next;
}
}else{
current = current->next;
}
}
*list = dummy->next;
delete dummy;
}
直没
N
【在 m********c 的大作中提到】 : 上周末做了pure storage的interviewstreet的题目,总共两道题,30分钟,今天晚 : 上就收到了拒信,下面是题目。 : 第一题是Remove all elements from a linked list of integers that have value N : ,就是要实现下面的函数 : void removeNode(int val, LinkedList **list)。 : 题目不算难,但是我刚看到pointer to pointer 一下子没想出来怎么做,想了半天, : 最后写出来了,test cases5个过了3个,另外两个后来想了想是估计是因为处理修改 : list的时候出错。下面是我写的代码。 : void removeNode(int val, LinkedList **list) { : LinkedList *prev = *list;
|
p****U 发帖数: 109 | 16 如果他要用双指针做参数, 还是用double pointer吧, 用 dummy head的话,感觉会
让interviewer 觉得理解指针不够透彻。
void removeNode(int val, ListNode **list) {
while(*list!=NULL){
if((*list)->val==val){
ListNode *next=(*list)->next;
delete *list;
*list=next;
}
else {
list=&(*list)->next;
}
}
} |
s*******s 发帖数: 103 | 17 跟我做的一模一样,不过我是用C写的。
没有C++...
前面还是10题简单题:
比如, 我想一个0到1000的数,只能回答你yes/no,用什么策略可以找到这个数,并且
猜的次数的worse case最小?最小值多少少。
其他忘了。 |
m********c 发帖数: 105 | 18 做了,我上网搜了搜,都是GRE的CS的题。。
【在 p****U 的大作中提到】 : 请问lz之前还做了10道选择题的online test么?
|
m********c 发帖数: 105 | 19 看到你的觉得自己写的确实不怎么地。。。
另外像这种情况需要在函数里面delete那些node吗?
【在 p****U 的大作中提到】 : 如果他要用双指针做参数, 还是用double pointer吧, 用 dummy head的话,感觉会 : 让interviewer 觉得理解指针不够透彻。 : void removeNode(int val, ListNode **list) { : while(*list!=NULL){ : if((*list)->val==val){ : ListNode *next=(*list)->next; : delete *list; : *list=next; : } : else {
|
b**********5 发帖数: 7881 | 20 你还是多练练题吧。 这种题, 做对了, 再去面FB
直没
N
【在 m********c 的大作中提到】 : 上周末做了pure storage的interviewstreet的题目,总共两道题,30分钟,今天晚 : 上就收到了拒信,下面是题目。 : 第一题是Remove all elements from a linked list of integers that have value N : ,就是要实现下面的函数 : void removeNode(int val, LinkedList **list)。 : 题目不算难,但是我刚看到pointer to pointer 一下子没想出来怎么做,想了半天, : 最后写出来了,test cases5个过了3个,另外两个后来想了想是估计是因为处理修改 : list的时候出错。下面是我写的代码。 : void removeNode(int val, LinkedList **list) { : LinkedList *prev = *list;
|
|
|
p****U 发帖数: 109 | 21 感觉他的test case 测试不到哈。 不delete没关系。 我上上周做的10道题现在,都没
消息。请问lz等了多久让做这个题的?
【在 m********c 的大作中提到】 : 看到你的觉得自己写的确实不怎么地。。。 : 另外像这种情况需要在函数里面delete那些node吗?
|
s*****n 发帖数: 994 | 22 这个有连起来吗?
【在 p****U 的大作中提到】 : 如果他要用双指针做参数, 还是用double pointer吧, 用 dummy head的话,感觉会 : 让interviewer 觉得理解指针不够透彻。 : void removeNode(int val, ListNode **list) { : while(*list!=NULL){ : if((*list)->val==val){ : ListNode *next=(*list)->next; : delete *list; : *list=next; : } : else {
|
m********c 发帖数: 105 | 23 我做了题以后,过了一周多没理我,我发邮件问了HR,然后HR说正在准备这个新题了,
然后又过了一个星期给我发过来的,上周四发过来的,不行你发邮件follow up一下
【在 p****U 的大作中提到】 : 感觉他的test case 测试不到哈。 不delete没关系。 我上上周做的10道题现在,都没 : 消息。请问lz等了多久让做这个题的?
|
s***e 发帖数: 403 | 24 说实话这些题目不难。
如果这样的题目都做不到你估计过不了onsite的。 |
f********4 发帖数: 988 | 25 是啊,我也奇怪呢,这个没改pre的next ptr吧。
【在 s*****n 的大作中提到】 : 这个有连起来吗?
|
J****3 发帖数: 427 | 26 同楼上, 这个删除完了链表也没法再遍历了吧。还是pre, cur, post 这种方法删吧 |
F**********s 发帖数: 46 | 27 这个online test是让你填写代码还是要将输入输出都写好? |