全部评论
进入笔试的时候明明选择的是,服务端开发工程师岗(Python),结果第二题编程语言只有Java/C/C++...我的天
奇信安第二题不是反序列化二叉树➕最低公共祖先吗,一直内存超限,心累
#include <stdio.h>
#include <vector>
#include <iostream>
using namespace std;
int quick_power(int a, int n)
{
int ret = 1;
while(n)
{
if(n&1)
ret = ret * a;
a = a * a;
n >>= 1;
}
return ret;
}
vector<int> tree;
int find(int idx1, int idx2)
{
if(idx1 == idx2)
{
return idx1;
}
else if(idx1 > idx2)
{
return find(idx2, idx1);
}
else//idx1 < idx2
{
return find(idx1, (idx2 - 1) / 2);
}
}
int main()
{
int n;
cin >> n;
int m = quick_power(2, n) - 1;
tree.resize(m);
for(int i = 0; i < m; ++i)
{
cin >> tree[i];
}
int a, b;
int idx1 = -1, idx2 = -1;
cin >> a >> b;
int ans = -1;
if(a == -1 || b == -1)
{
ans = -1;
}
else
{
for(int i = 0; i < m; ++i)
{
if(a == tree[i])
idx1 = i;
else if(b == tree[i])
idx2 = i;
}
if(a == b)
idx2 = idx1;
if(idx1 == -1 || idx2 == -1)
{
ans = -1;
}
else
{
int idx = find(idx1, idx2);
ans = tree[idx];
}
}
/* cout << idx << endl; */
/* cout << tree[idx] << endl; */
cout << ans << endl;
return 0;
}
72 100 第二题建个数组就行哎
放弃奇安信了。。。
第二题求代码
相关推荐


