由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 求教几道面试题~
相关主题
fb面经,附答案,求大牛指点求教:binary search tree中找第i大的数
Twitter电面未通过问一个careercup的题
回馈本版,新鲜店面,新题新气象想到一道老题
热腾腾的 LinkedIn 电面题攒RPmirror 一个binary tree, 用non-recursive解法怎么做
一道google面试题问个google面试题
Interview question::一个老题binary tree找 lowest common ancestor 的code (请教
BST面试题关于inordertraversal 的iterative way
二叉树按层次打印有没有办法换行显示?今天的一道电面题,有点意思
相关话题的讨论汇总
话题: root话题: left话题: node话题: int
进入JobHunting版参与讨论
1 (共1页)
c******0
发帖数: 260
1
1。BT(binary tree), want to find the LIS(largest independent set) of the BT
LIS: if the current node is in the set, then its children should not be in
the set. So that the set has the largest number of nodes.
这题看着很眼熟,就是不知道怎么做。。。。
2.the most frequent urls in the past minute, hour, day
这题貌似很常见。我看stackoverflow上有人说用count-min sketch. 不知道还有没有
简便点的方法。
3.system deisign: design amazon product page
问这题是因为不明白对于这种system design 的题需要考虑哪些要点。
4.一个二维数组,元素是0或1,找出最大的由1构成的"X"形状
这题应该是用DP,但是还是不知道怎么做。。。。。
x****g
发帖数: 1512
2
抛砖引玉一下? 呵呵.
1: "its children"我的理解是直属子节点? 如果间接也算方法类似?
每个节点保持2个值表示以自己为根子树,改节点参与和不参与的最大node set.
那么有NULL节点0,0. 那么
dp[root][0] = max(dp[root->left][0],dp[root->left][1]) +
max(dp[root->right][0],dp[root->right][1])
dp[root][1] = dp[root->left][0]+dp[root->right][0] + 1
//0表示自己不参与,1表示自己参与.
实际代码只要f(node, inMax&, notInMax&)递归就可以了,最后返回跟节点2个数字
中大的那个即可.
4: "X形状" 我理解为奇数的n*n? 对于任何一个点 i,j,分4个方向分别表示以该点为
右下,左下,右上,左上斜着的连续的1的个数(含自己).
那么该点为中心的最大X中1的个数为min(4个方向计数)*4-3.
这个值存在dp关系,以右下为例
dp[i][j][0]=dp[i-1][j-1][0]+1 A[i][j]==1
=0 A[i][j]==0
四个方向道理一样,类似求解dp[i][j][1..3]
完了就可以得出最大的那个了.
O(N^2)
想不出更好的,呵呵.

BT

【在 c******0 的大作中提到】
: 1。BT(binary tree), want to find the LIS(largest independent set) of the BT
: LIS: if the current node is in the set, then its children should not be in
: the set. So that the set has the largest number of nodes.
: 这题看着很眼熟,就是不知道怎么做。。。。
: 2.the most frequent urls in the past minute, hour, day
: 这题貌似很常见。我看stackoverflow上有人说用count-min sketch. 不知道还有没有
: 简便点的方法。
: 3.system deisign: design amazon product page
: 问这题是因为不明白对于这种system design 的题需要考虑哪些要点。
: 4.一个二维数组,元素是0或1,找出最大的由1构成的"X"形状

c******0
发帖数: 260
3
第一题,我找到类似题的答案了,思路应该跟你说的一样
http://mypathtothe4.blogspot.com/2013/03/dynamic-programming-co
最后一题应该分奇数和偶数两种情况,思路应该跟你处理奇数是差不多的。
DP就是好难啊!!!

【在 x****g 的大作中提到】
: 抛砖引玉一下? 呵呵.
: 1: "its children"我的理解是直属子节点? 如果间接也算方法类似?
: 每个节点保持2个值表示以自己为根子树,改节点参与和不参与的最大node set.
: 那么有NULL节点0,0. 那么
: dp[root][0] = max(dp[root->left][0],dp[root->left][1]) +
: max(dp[root->right][0],dp[root->right][1])
: dp[root][1] = dp[root->left][0]+dp[root->right][0] + 1
: //0表示自己不参与,1表示自己参与.
: 实际代码只要f(node, inMax&, notInMax&)递归就可以了,最后返回跟节点2个数字
: 中大的那个即可.

c******0
发帖数: 260
4
我写了一下,不知道对不对。。。求指教
struct Node{
int val;
Node *left, *right;
Node(int v): val(v), left(NULL), right(NULL){}
};
void maxNodeHelp(Node *root, int &direct, int &undirect){
if(!root) return;

int nextDirect = 1, nextUndirect = 0;
maxNodeHelp(root->left, nextDirect, nextUndirect);
maxNodeHelp(root->right, nextDirect, nextUndirect);

direct += nextUndirect;
undirect += max(nextDirect, nextUndirect);
}
int maxNode(Node *root){
if(!root) return 0;
int direct = 1, undirect=0;
maxNodeHelp(root, direct, undirect);
return max(direct, undirect);
}

【在 x****g 的大作中提到】
: 抛砖引玉一下? 呵呵.
: 1: "its children"我的理解是直属子节点? 如果间接也算方法类似?
: 每个节点保持2个值表示以自己为根子树,改节点参与和不参与的最大node set.
: 那么有NULL节点0,0. 那么
: dp[root][0] = max(dp[root->left][0],dp[root->left][1]) +
: max(dp[root->right][0],dp[root->right][1])
: dp[root][1] = dp[root->left][0]+dp[root->right][0] + 1
: //0表示自己不参与,1表示自己参与.
: 实际代码只要f(node, inMax&, notInMax&)递归就可以了,最后返回跟节点2个数字
: 中大的那个即可.

g*****g
发帖数: 212
5
int maxNode(Node *root, bool parentSet){
if(!root) return 0;

if (parentSet)
{
return maxNode(root->left, false) + maxNode(root->right, false);
}
else
{
int n1 = 1 + maxNode(root->left, true) + maxNode(root->right, true);
int n2 = maxNode(root->left, false) + maxNode(root->right, false);
return max(n1, n2);
}
}
f**********t
发帖数: 1001
6
// BT(binary tree), want to find the LIS(largest independent set) of the BT
LIS: if the current node is in the set, then its children should not be in
the set. So that the set has the largest number of nodes.
vector MaxIndependentSet(TreeNode *r) {
if (!r) {
return vector();
}
static unordered_map> resultTable;
if (resultTable.find(r) != resultTable.end()) {
return resultTable[r];
} else {
vector vl, vll, vlr, vr, vrl, vrr;
if (r->left) {
vl = MaxIndependentSet(r->left);
vll = MaxIndependentSet(r->left->left);
vlr = MaxIndependentSet(r->left->right);
}
if (r->right) {
vr = MaxIndependentSet(r->right);
vrl = MaxIndependentSet(r->right->left);
vrr = MaxIndependentSet(r->right->right);
}
if (1 + vll.size() + + vlr.size() + vrl.size() + vrr.size() <
vl.size() + vr.size()) {
vl.insert(vl.end(), vr.begin(), vr.end());
resultTable[r] = vl;
} else {
vll.insert(vll.end(), vrr.begin(), vrr.end());
vll.insert(vll.end(), vrl.begin(), vrl.end());
vll.insert(vll.end(), vlr.begin(), vlr.end());
vll.push_back(r->val);
resultTable[r] = vll;
}
}
return resultTable[r];
}
1 (共1页)
进入JobHunting版参与讨论
相关主题
今天的一道电面题,有点意思一道google面试题
判断BT是否BST?Interview question::
least common ancestor的疑惑BST面试题
算法题:如何判断二叉树是AVL?二叉树按层次打印有没有办法换行显示?
fb面经,附答案,求大牛指点求教:binary search tree中找第i大的数
Twitter电面未通过问一个careercup的题
回馈本版,新鲜店面,新题新气象想到一道老题
热腾腾的 LinkedIn 电面题攒RPmirror 一个binary tree, 用non-recursive解法怎么做
相关话题的讨论汇总
话题: root话题: left话题: node话题: int