Redian新闻
>
邻居家太郁闷了
avatar
邻居家太郁闷了# Living
r*e
1
国内小伙伴,刚面fb,分享一下题目和答案
给一个bst,和其中一个节点的value,求在bst中比这个节点大的下一个node
,O(1) space和 O(log N) time的解法,有Parent指针
struct node{
int val;
node* left;
node* right;
node* parent;
node(int v){
val = v;
parent = left = right = NULL;
}
};
node* find(node* root, int val){
if(!root) return NULL;
if(root->val == val) return root;
if(root->val < val) return find(root->right, val);
return find(root->left, val);
}
node* next(node* n){
if(!n) return NULL;
if(n->right){
node* p = n->right;
while(p->left) p = p->left;
return p;
}
p = n->parent;
while(p){
if(p->left == n) break;
n = p;
p = p->parent;
}
return p;
}
avatar
t*n
2
刚刚修好的前院,费了不少劲儿,搞了很多鹅卵石、假山石,还种了不少花。不到两个
星期,今天早上市政的来修什么东西,愣是给人家挖了个2米直径的大坑。
avatar
r*e
3
给定一个vector> v
其中string表示user id, int表示该user发帖数,找出发帖最多的k个用户
void kth(vector>& v, int begin, int end, int k){
if(end-begin+1 int i = begin, j = end;
pair pivot = v[end];
while(i < j){
while(i < j && v[i].second >= pivot.second) i++;
if(i < j) v[j--] = v[i];
while(i < j && v[j].second <= pivot.second) j--;
if(i < j) v[i++] = v[j];
}
v[i] = pivot;
if(i-begin+1 == k) return ;
if(i-begin+1 < k) return kth(v, i+1, end, k-(i-begin+1));
return kth(v, begin, i-1, k);
}
avatar
l*0
4
就是找后继节点呀
if node.right ! = null
return maxNode(node.right);
else
Node parent = node.parent;
while(parent.right == node) {
node = parent;
parent = node.parent;
}
return parent;
avatar
w*t
5
赞楼主分享!
是在国内面的吗?

【在 r*****e 的大作中提到】
: 国内小伙伴,刚面fb,分享一下题目和答案
: 给一个bst,和其中一个节点的value,求在bst中比这个节点大的下一个node
: ,O(1) space和 O(log N) time的解法,有Parent指针
: struct node{
: int val;
: node* left;
: node* right;
: node* parent;
: node(int v){
: val = v;

avatar
f*a
6
forgot to check for null after Node parent = node.parent;

【在 l*******0 的大作中提到】
: 就是找后继节点呀
: if node.right ! = null
: return maxNode(node.right);
: else
: Node parent = node.parent;
: while(parent.right == node) {
: node = parent;
: parent = node.parent;
: }
: return parent;

avatar
w*t
7
恩,总体难度如何? 设计题呢?

【在 r*****e 的大作中提到】
: 给定一个vector> v
: 其中string表示user id, int表示该user发帖数,找出发帖最多的k个用户
: void kth(vector>& v, int begin, int end, int k){
: if(end-begin+1 : int i = begin, j = end;
: pair pivot = v[end];
: while(i < j){
: while(i < j && v[i].second >= pivot.second) i++;
: if(i < j) v[j--] = v[i];
: while(i < j && v[j].second <= pivot.second) j--;

avatar
w*t
8
pivot的选取有要求吗?

【在 r*****e 的大作中提到】
: 给定一个vector> v
: 其中string表示user id, int表示该user发帖数,找出发帖最多的k个用户
: void kth(vector>& v, int begin, int end, int k){
: if(end-begin+1 : int i = begin, j = end;
: pair pivot = v[end];
: while(i < j){
: while(i < j && v[i].second >= pivot.second) i++;
: if(i < j) v[j--] = v[i];
: while(i < j && v[j].second <= pivot.second) j--;

avatar
r*e
9
没有碰到设计题
avatar
r*e
10
pivot自己定
avatar
f*a
11
this looks like a phone interview ....
avatar
m*a
12
你是不是工作不满一年?所以没有设计题
avatar
r*e
13
还有两道lc的题,fb一定有设计题?
avatar
l*o
14
哪两道? 透露一下呗

【在 r*****e 的大作中提到】
: 还有两道lc的题,fb一定有设计题?
avatar
j*g
15
bst题的那一轮中,还有一题是什么?还是这轮中只有bst一题?
avatar
h*k
16
第二题是找第k个还是前k个?不熟悉c++,能细讲下思路吗
avatar
r*e
17
reverse string
jump game
没有设计题
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。