百度面试

题1

a+b交换(1)不浪费存储空间(2)会产生什么异常(3)如果产生异常该怎么解决(4)有多少种交换方式

普通的解法会造成内存的溢出

下面提供三种解法

下面有三种解法用c++编写,我试用了java可是java不会溢出,大概和编译器或者jvm有关

1.利用异或实现

2.利用指针,地址指向改变

3.利用栈实现,结果如下

int main()
{
   int a=4294967295;
   int b=2100000000;


  a=a^b;
   b=a^b;
   a=a^b;


/*int *a,*b; //假设
a=new int(2147483647);
b=new int(2147483647); //&a=0x00001000h,&b=0x00001200h
if(a<b)
{
 a=(int*)(b-a);
 b=(int*)(b-(int(a)&0x0000ffff));
 a=(int*)(b+(int(a)&0x0000ffff));
}
else
{
b=(int*)(a-b);
a=(int*)(a-(int(b)&0x0000ffff));
b=(int*)(a+(int(b)&0x0000ffff));
}*/

/*
stack<int> s;
int a=10;
int b=20;
s.push(a);
s.push(b);
a=s.top();
s.pop();
b=s.top();
cout<<a<<"  "<<b;
return 0;
}*
/

题2

将一个10进制转为2进制,计算1出现的个数 代码实现


三种方法

第一种就不写了

第二种

int num=0;

int v=255;

while(v!=0)

{

num=num+(v&ox01);

v>>=1;

复杂度为O(logV)

}

//位操作


第三种解法

while(v!=0)

{

  v=v&(v-1);

 num++;

//复杂度降低到O(M)

}

第四种空间换时间


把你所要的数所有情况1的个数全部列出来,该数的下标就是1的个数,典型的空间置换时间,如果频繁使用时,这是一个不错的方法


题三

从数组里找出 A和B,其和等于面试管给出的数  即 A+B=C,所用的时间复杂度最小  代码实现

3种解法解题思路层层递进

1.两层for循环,然后比较, 时间复杂度为O(n^2);

2.先快速排序,然后再比较 时间复杂度为O(nlgn+n);

3.把数组放在hashSet中,然后利用面试管给的值减去hashSet中的数,然后放入HashSet,如果放的进去则该数不是,依次遍历,如果放不进去则有

否则遍历完输出没有AB该数

题四

25匹马一个赛场,每次只能赛5匹马,求出所用的比赛场数最少几场找出前5匹马

1.先找出前3匹快马

每5匹一队,需比赛5场,得出5匹马,得出每队的第一名(每队的第一名不一定是另一对的第一名)


让每队的第一名比赛一场,排出名次1,2,3,4,5(红色标注每一组的第一名比较后的结果)


则第一名是所有马中的第一名,第二名不一定是(获得第一名马的那匹马所在队的第一名),所以需要和获得第一名的那匹马所在的组的第二名进行比较,得出第二名(前提是每次五匹马,所以和3,4,5组成一队进行比赛),排好名次于是2,3名出来了,7场得出前3名,依次类推得到第五名



题五


两个表 进行内联,求其结果

表中某个字段相同的记录列出来就好


题六  linux知识

常用指令


总结:小问题中有很多你意想不到的解法,感叹算法和思想何其重要

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值