周星星_:哎呦我去,叶神亲自赞我了,好鸡冻
我觉得不管什么样的秋招经历写出来对于师弟师妹都是有用的。
就好像手机厂商会有高端、中端、低端机型来覆盖所有消费者。
其他大牛的面经总结是主攻高端offer,这一篇呢就算是主攻中低端offer了:)查看图片
投递全志科技等公司10个岗位 >
0 点赞 评论 收藏
分享
神様:import java.util.Scanner;
class Main{
public static void main(String[] args) {
Scanner in= new Scanner(System.in);
while(in.hasNext()){
int n = in.nextInt();
int[] tree = new int[n];
for (int i = 0; i < tree.length; i++) {
tree[i]=-1;
}
for(int i =0;i<n-1;i++){
int p = in.nextInt();
int c = in.nextInt();
tree[c] =p;
}
int max=1;
int count =0;
for (int i = n-1; i >0; --i) {
int cur=i;
while(cur!=-1)
{
cur = tree[cur];
count++;
}
if(count>max) max =count;
count=0;
}
System.out.println(max);
}
}
}
//这个应该是O(n)的做法了吧 AC了
投递小米集团等公司10个岗位 >
0 点赞 评论 收藏
分享
牛客1481368号:判断一个数是不是素数就是用当前数除比它小的所有素数,不会超时
投递搜狗等公司10个岗位 >
0 点赞 评论 收藏
分享
InterOAO:先说一下static_cast
用static_cast 转换的时候是不安全的,
该代码能将不是继承关系的指针转为b , 不会出现编译错误的前提是 声明的时候, 其余几个指针类型都是void*。
虽然可以转换, 但是也只是能调用函数,
不能正常输出成员变量的值, 因为static_cast不安全,
它会 将错误保留下去, 大家可以试试。
#include <iostream>
using namespace std;class x
{
public:
int i;
x(){i=1;}
virtual void f(){cout<<"x"<<endl;}
};
class a:public x
{
public:
int j;
a(){j=2;}
void f(){cout<<"a"<<endl;}
};
int main()
{
x *p1 = new x;
a *p2 = static_cast<a*>(p1);
p2->f();//x
cout<<p2->i<<endl;//1
cout<<p2->j<<endl;//0
return 0;
} //static_cast将一个指向x类型的指针转为指向a类型的指针, //虽然正确,但是不安全, 因为此时p2并不能访问j,它访问的是 //垃圾值. 如果使用dynamic_cast 他就会检查出这种不安全
//情况, 从而返回NULL.
另外,楼主的函数之所以会这样输出daxbe
我觉得是因为 每一个类都继承x, x中的函数是virtual类型的, 那派生类重写的函数也是virtual类型的, 既然是虚函数, 调用的时候就会去虚函数表中找函数地址,找虚函数表的时候不看指针类型,只看实际指向的内容(这就是能多态的一部分原因),因为他们实际指向各自的函数,所以最后会输出各自的结果。
至于楼上说的静态绑定,我觉得不对,静态绑定是指普通函数的调用使用的是静态绑定,一旦函数是虚函数,就不能是静态绑定的,一定是通过查表才决定绑定哪个函数。
我也是小白,如果大家有觉得我说的不对的地方,帮我指正啦。
投递腾讯等公司10个岗位 >
0 点赞 评论 收藏
分享
cxxbro:先内连接查询,再计算平均值,然后再union一下
0 点赞 评论 收藏
分享
关注他的用户也关注了: