百度面试题

百度面试题1.一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。这道题的解答请看下一篇日志2.一个文件,内含一千万行字符串,每个字符串在1K以内,要求找出所有相反的串对,如abc和

大家好,又见面了,我是你们的朋友全栈君。

1.一个int数组,里面数据无任何限制,要求求出所有这样的数a[i],其左边的数都小于等于它,右边的数都大于等于它。能否只用一个额外数组和少量其它空间实现。

这道题的解答请看下一篇日志

2.一个文件,内含一千万行字符串,每个字符串在1K以内,要求找出所有相反的串对,如abc和cba。

当时怎么想的忘记了,现在重新思考一下,文件的大小上限是10G,不可能在内存操作了。考虑设计一种hash使得如果两个字符串维相反串能得出相同的hash值,然后用该hash将文件中的字符串散列到不同的文件中,再在各文件中进行匹配。比如这样的hash函数对字符串上所有字符的ascii求和,因为长度在1K以内,因此范围在int之内。更进一步,可以在上面那个hash后面再加一个字符串长度,可以得到更好的散列效果。

在各个单独文件中匹配时,如果采用的是第二种hash函数,那么该文件中的所有字符串都有相同的长度。如果hash效果好,那么这个文件应该小到可以在内存中进行操作了。将文件拷贝为两份,分别按照不同规则hash:第一份按前k位哈希,第二份将字符串的头尾进行颠倒后按前k位哈希(只是对于排序算法颠倒,不必实际颠倒)。这里的按前k位哈希只需要前k位相同能得到相同结果就好,比如第i位的ascii乘以2^i。两份拷贝中hash值相同的就很可能是要求的相反串对了,再进行实际匹配,工作量应该就可以接受了。

3.STL的set用什么实现的?为什么不用hash?

是用红黑树实现的,红黑树是一种平衡性很好的二分查找树。要使用hash的话,就需要为不同的存储类型编写哈希函数,这样就照顾不到容器的模板性了,而是用红黑树只需要为不同类型重载operator<就可以了。

修改于2011.9.2

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159881.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 前端VSCode常用插件及安装

    前端VSCode常用插件及安装新手前端VSCode常用插件及其安装方法

    2022年7月25日
    8
  • Linux安装gcc方法(超简单安装)

    Linux安装gcc方法(超简单安装)Linux安装gcc方法(超简单安装)**1:Centos版本**终端输入以下命令yum-yinstallgccgcc-c++autoconfpcrepcre-develmakeautomakeyum-yinstallwgethttpd-toolsvim**2:Ubuntu版本**终端输入以下命令sudoaptinstallgcc输入Y开始安装获取版本信息,检查gcc是否安装成功了gcc–version出现版本信息代表安装完成*

    2022年5月25日
    258
  • vue图片加载失败默认图片[通俗易懂]

    vue图片加载失败默认图片[通俗易懂]css解决方案:img{position:relative;}img:after{content:url(‘替代圖片’);display:block;position:absolute;z-index:2;top:0;left:0;width:100%;height:100%;background-co…

    2022年6月2日
    27
  • 谈SaaS下如何迅速部署应用软件

    谈SaaS下如何迅速部署应用软件

    2021年7月26日
    49
  • 测试用例设计——等价类划分法「建议收藏」

    测试用例设计——等价类划分法「建议收藏」一、分析问题如果我们需要对下面的这个两位数加法器设计测试用例,在测试了1+1,1+2,(-1)+1和(-1)+2之后,是否有必要测试1+3,1+4,1+(-3)和1+(-4)呢?如果不对两位数加法器程序进行穷举测试,我们能否放心的认为其他所有的参数组合都是正确的呢?可想而知,我们不可能输入这么多的组合进行测试。那么,如果不可能输入这些组合进行测试,是否会担心会遗漏测试中会存在bug呢?…

    2022年10月18日
    0
  • 嵌入式开发之mipi协议基础学习

    嵌入式开发之mipi协议基础学习MIPI——Mobileindustryprocessinterface多家移动开发或者应用商共同筹划接口标准联盟节约成本,加快产品开发速度内容丰富,显示、照相机、电源管理、射频、存储接口等等CIS(cmosimagesensor)中仅用到了mipi协议中的csi-2(cameraserialinterface二代,标识生成要求)和D-phy

    2022年5月24日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号