由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 问一个coding的skill
相关主题
C++ 里面这个 & 是什么意思?A面试题
BB onsite惨败而归 血的教训!linkedin 实习面试
How to handle the return type of container.size() in C++Amazon onsite面经
topcoder- strange country problem.Graph DFS Iterative
bfs vs dfsGoogle onsite归来
round 1 phone interview today -- Amazon什么也不管了,给了一个烙印很差的feedback
攒人品,回答问题对自己DFS能力彻底的绝望了。
贴一道题,帮忙做做code review (How can we generate all possibilities on braces )IDDFS
相关话题的讨论汇总
话题: sizes话题: skill话题: coding话题: cnt
进入JobHunting版参与讨论
1 (共1页)
g*******y
发帖数: 1930
1
假设要做很多重循环,
比如有N个vector v1 v2...vN
要做的循环是:
for(v1.beg ... v1.end)
for(v2.beg ... v2.end)
....
for(vN.beg ... vN.end)
最佳的方式是怎么写好呢?
a**********s
发帖数: 588
2
一个方法是弄两个array, CurrentIndices[N], Sizes[N];
memset(CurrentIndices, 0, sizeof(CurrentIndices));
Sizes = {v1.size(), ..., vN.size()};
do {
....
} while(Next(CurrentIndices, Sizes, N));
bool Next(int CurrentIndices[], int Sizes[], int cnt)
{
int i = 0;
while (i < cnt && CurrentIndices[i] == Sizes[i]-1)
CurrentIndices[i++] = 0;
if (i == cnt)
return false;
CurrentIndices[i]++;
return true;
}
没有验证过, 不过我觉得这样也不怎么好
g*******y
发帖数: 1930
3
for generality,假定不一样吧。
如果一样会更容易些吗?
每个单独的循环就是一个长度不等的数组的遍历吧。
一个简单常见的例子就是给一个手机号码,打印所有可能的string (假设每个数字有不
同数目的字母相对应)。
我的想法是,用单个整数循环, i = 1 ... product of all sizes, 然后对每个i,算
出一串indices,分别用于每个vector.
这样可以很简单写出来,但是效率不高。

【在 a**********s 的大作中提到】
: 一个方法是弄两个array, CurrentIndices[N], Sizes[N];
: memset(CurrentIndices, 0, sizeof(CurrentIndices));
: Sizes = {v1.size(), ..., vN.size()};
: do {
: ....
: } while(Next(CurrentIndices, Sizes, N));
: bool Next(int CurrentIndices[], int Sizes[], int cnt)
: {
: int i = 0;
: while (i < cnt && CurrentIndices[i] == Sizes[i]-1)

p*********a
发帖数: 21
4
dfs

【在 g*******y 的大作中提到】
: 假设要做很多重循环,
: 比如有N个vector v1 v2...vN
: 要做的循环是:
: for(v1.beg ... v1.end)
: for(v2.beg ... v2.end)
: ....
: for(vN.beg ... vN.end)
: 最佳的方式是怎么写好呢?

g*******y
发帖数: 1930
5
如果就是常规的DFS的话,树的大小 和 iteration的总数目成正比了吧?

【在 p*********a 的大作中提到】
: dfs
a**********s
发帖数: 588
6
好像我上面的版本也不见得比你的版本快(少做了几次除法, 但是有很多branches), 不
过不用担心
overflow
这种是面试题的话, 大概就是面试管想看到的吧

【在 g*******y 的大作中提到】
: for generality,假定不一样吧。
: 如果一样会更容易些吗?
: 每个单独的循环就是一个长度不等的数组的遍历吧。
: 一个简单常见的例子就是给一个手机号码,打印所有可能的string (假设每个数字有不
: 同数目的字母相对应)。
: 我的想法是,用单个整数循环, i = 1 ... product of all sizes, 然后对每个i,算
: 出一串indices,分别用于每个vector.
: 这样可以很简单写出来,但是效率不高。

g*******y
发帖数: 1930
7
如果就是常规的DFS的话,树的大小 和 iteration的总数目成正比了吧?

【在 p*********a 的大作中提到】
: dfs
g*******y
发帖数: 1930
8
呵呵,你的方法正好是我想找的答案。

【在 a**********s 的大作中提到】
: 好像我上面的版本也不见得比你的版本快(少做了几次除法, 但是有很多branches), 不
: 过不用担心
: overflow
: 这种是面试题的话, 大概就是面试管想看到的吧

p*********a
发帖数: 21
9
use stack to simulate the function call if you really care about overflow.

【在 g*******y 的大作中提到】
: 如果就是常规的DFS的话,树的大小 和 iteration的总数目成正比了吧?
1 (共1页)
进入JobHunting版参与讨论
相关主题
IDDFSbfs vs dfs
一棵树,如果找最深的至少有两个子节点的节点?round 1 phone interview today -- Amazon
面试题总结(7) - Tree攒人品,回答问题
F家面经贴一道题,帮忙做做code review (How can we generate all possibilities on braces )
C++ 里面这个 & 是什么意思?A面试题
BB onsite惨败而归 血的教训!linkedin 实习面试
How to handle the return type of container.size() in C++Amazon onsite面经
topcoder- strange country problem.Graph DFS Iterative
相关话题的讨论汇总
话题: sizes话题: skill话题: coding话题: cnt