MS题目-hby

来源:互联网 发布:python可视化开发工具 编辑:程序博客网 时间:2024/05/16 12:36

1.delete和delete[]有什么区别,为什么delete一个不够

当你使用new时,有两件事会发生。第一,内存被配置(透过函数operator new)。第二,会有一个(或以上)的constructors针对此内存被调用。当你使用delete时,也有两件事发生:一个(或以上)的destructors会针对此内存被调用,然后内存被释放(透过函数operator delete)。如果你使用delete是未加括号,delete便假设删除对象是单一对象。否则便假设删除对象是个数组。

2.实现C的库函数strtok

trtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回被分割出片段的指针。

3.在N个数的第K大数

 利用快速排序的思想,从数组S中随机找出一个元素X,把数组分为两部分Sa和Sb。Sa中的元素大于等于X,Sb中元素小于X。这时有两种情况:
1. Sa中元素的个数小于k,则Sb中的第k-|Sa|个元素即为第k大数;
2. Sa中元素的个数大于等于k,则返回Sa中的第k大数。时间复杂度近似为O(n)

4.游戏:有3个盒子,其中一个有奖,假定你一开始选择了一个盒子;主持人知道那个盒子有奖,这时主持人从另外两个盒子中选了一个没有奖的盒子打开,请问这时候你应该换一个盒子以使获奖的概率增大吗?

5.有两个已经排好序的数组a1和a2,求这两个数组合起来第k大得数,要求时间复杂度尽量小

6.有N个人编号1..N,N的礼物编号1..N,写出一个算法,使第K个人不拿第K个礼物,假定输入为a[1..N]=[1..N],其实就是将a洗牌,使a[k]!=k;假定每个人拿到与自己编号不同的礼物的概率相等呢,又应该怎样洗牌。












原创粉丝点击