搜狗编程题两道AC

第一道,直接暴力判断,从最大的[0,n-1]开始判断


第二道,先算出2到最大偶数之间所有的素数,存放在数组中,是素数为1,不是为0,然后计算两两之间素数的个数,AC71%且时间复杂度过高,改进“计算两两之间的素数 ”O(N^2),改成O(N),对第i个偶数,需要判断左右的个数,然后相乘,具体见下面例子, AC71%但没有复杂度问题,接着搞了半天也没有进展,最后几分钟把int改成long long,AC100%。

例子:4 * 6 * * 12
星号代表素数,星号依次为5,7,11
对于第一个星号,会被4计算两次,因为4的右边有两个数6和12,左边就4一个数,所以有1 * 1 * 2(leftCnt * startCnt * rightCnt)
对于后两个星号,会被左边的4和6这两个数各计算一次,右边就12一个数,所以有2 * 2 * 1(leftCnt * startCnt * rightCnt )


#搜狗#
全部评论
那道求回文前缀的,我以为有O(n)或者O(nlogn)之类的算法,结果实在没想到就暴力了一发就对了。。 总的来说编程题挺简单的。。。
点赞
送花
回复
分享
发布于 2016-09-12 17:44
我还以为求的是最大回文子串的长度
点赞
送花
回复
分享
发布于 2016-09-12 17:59
秋招专场
校招火热招聘中
官网直投
What??!!!改long long就过了?
点赞
送花
回复
分享
发布于 2016-09-12 17:32
 kmp O(n)
点赞
送花
回复
分享
发布于 2016-09-12 17:55
我靠,题意理解错了,我以为要求一个字符串的回文字串。。那请问sogou为什么是1?还有他不是让求前缀长么,前缀不是一半么
点赞
送花
回复
分享
发布于 2016-09-12 17:59
暴力都能过呀 以为过不了我写了半天写了个kmp
点赞
送花
回复
分享
发布于 2016-09-12 18:03
我就没想过暴力的算法,那题目上几十万字节也是扯淡的
点赞
送花
回复
分享
发布于 2016-09-12 18:07
第二题 71,O(n2),想到了没来得及改成 n 的
点赞
送花
回复
分享
发布于 2016-09-12 18:09
Fu*k,第二道改成O(n),上面函数改成long long了,下面主函数for循环没改,一直71%
点赞
送花
回复
分享
发布于 2016-09-12 18:19
输入没有循环输入能ac,也就是说一组测试用例运行一次程序,让我这种一开始发表的情何以堪
点赞
送花
回复
分享
发布于 2016-09-12 18:24
还好看过这个帖子,,晚上网易 int改成long long直接ac,,服
点赞
送花
回复
分享
发布于 2016-09-12 20:40
哎,当时没有想到int会溢出。。。。搜狗那个其实提示很明显,因为最大会有几万个数据,int肯定溢出了
点赞
送花
回复
分享
发布于 2016-09-12 20:48
对于第一个星号,会被4计算两次,因为4的右边有两个数6和12,左边就4一个数,所以有1 * 1 * 2(leftCnt * startCnt * rightCnt) 对于后两个星号,会被左边的4和6这两个数各计算一次,右边就12一个数,所以有2 * 2 * 1(leftCnt * startCnt * rightCnt ) 这是啥意思,看不懂吖
点赞
送花
回复
分享
发布于 2016-09-12 21:30
楼主收到面试信息了吗?
点赞
送花
回复
分享
发布于 2016-09-16 20:01
我也是七十一,int改成long,恍然大悟。。。
点赞
送花
回复
分享
发布于 2016-09-17 11:02

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务