解v_JULY_v博客的面试题(慢慢做,慢慢更新)

看到v_JULY_v博客(http://blog.youkuaiyun.com/v_july_v/article/details/6855788)里面的面试题

十月百度,阿里巴巴,迅雷搜狗最新面试十一题(每日更新中)

看了忍不住有点冲动,想把思路和大家分享一下,大家一起交流,

记得有句话,击打在石头上的浪花才会出现彩虹,所以我们不同思想的交流也能激起一道靓丽的彩虹!

1.十月百度:一个数组保存了N个结构,每个结构保存了一个坐标,结构间的坐标都不相同,请问如何找到指定坐标的结构(除了遍历整个数组,是否有更好的办法)?

思路:只想到用坐标重新作为新数组的小标,把原先的数组的下标作为新数组的值,之后指定坐标直接用坐标索引(不过要要求指定坐标的              最大值要尽量的小)

          也可以先对数组以坐标值进行排序再插值吧。

2.百度最新面试题:现在有1千万个随机数,随机数的范围在1到1亿之间。现在要求写出一种算法,将1到1亿之间没有在随机数中的数求出来。

思路:这个问题,理论上要确定那些数没有出现是要历遍的,问题是没有出现的数最少9千万过以上,所以太不划算的,所以我们要解决的是

          怎么保存这个不出现的数,而且可以省略去枚举这些不出现的数。

          下面我想到一种很省空间的标识方法,至于效率就不做深究了。

          首先,定义 一个结构体  struct tagArea{ long start, long end };

          然后对这1千万个随机数进行从小到大排序,之后从1开始 到排序后的数组比较  如果 当前数组比前一个数组大1以上 则保存到结构体

           即start赋予前一个数组的数 后面数组的数赋给 end  , 那么 没有出现的数就可以表示为(start,end)之间。

          类似 的 生成了 n个tagArea结构体,他们记录了 没有出项的数。

          另外一种方法是 用 二进制的每一bit表示那个数没有出现。 

4.搜狗:有N个正实数(注意是实数,大小升序排列) x1 , x2 ... xN,另有一个实数M。 需要选出若干个x,使这几个x的和与 M 最接近。 请描       述实现算法,并指出算法复杂度。

思路:只能想到二分法比较。。。。


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值