免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: BuTa丶潇
打印 上一主题 下一主题

[算法] 昨天面试的一道上机笔试题,哪位朋友有好的思路吗? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2013-04-03 16:32 |只看该作者
回复 3# bruceteen


    你好,我用了这个函数,可是有个别地方不是太懂,网上看了下手册,还是有个别地方不太明白。
比如:
int a=3;
vector<double> nums;
nums.push_back(1.5);
nums.push_back(2.6);
nums.push_back(3.7);
pair<vector<double>::iterator,vector<double>::iterator> range;
range = equal_range(nums.begin(),nums.end(),a);

cout<<*range_a.first<<endl;//得到3.7

这里我有一点不太清楚怎么操作..就是我得到的是3.7,但是我实际想得到的是"2"这个下标(这里把向量容器比喻成数组)。
请问有什么办法得到“2”这个下标呢。我查了网上的一些资料没找到。。
是需要再做一次遍历吗?遍历比较麻烦,请问有其他办法吗?

论坛徽章:
0
12 [报告]
发表于 2013-04-03 16:48 |只看该作者
我感觉2分法就行啊,如果中间数在a,b之间,那在左边找a在右边找b,如果小于a,在右边找,小于b在左边找嘛

论坛徽章:
0
13 [报告]
发表于 2013-04-03 17:22 |只看该作者
本帖最后由 cxqphysics 于 2013-04-03 17:22 编辑

设数组为A对其保存一个排好序的副本,并在副本里保存一个附加数据,用来表示其在原数组A中的位置,对于给出的区间[a,b],二分找出区间的两端在副本中的位置c d,遍历c d之间的元素,就可以找出在[a,b]中的元素在A中的位置

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
14 [报告]
发表于 2013-04-03 17:31 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
15 [报告]
发表于 2013-04-03 18:49 |只看该作者
回复 14# pmerofc


    是不让你a++到b,然后二分查找做的限制。

论坛徽章:
8
CU大牛徽章
日期:2013-04-17 10:59:39CU大牛徽章
日期:2013-04-17 11:01:45CU大牛徽章
日期:2013-04-17 11:02:15CU大牛徽章
日期:2013-04-17 11:02:36CU大牛徽章
日期:2013-04-17 11:02:58技术图书徽章
日期:2013-12-04 10:48:50酉鸡
日期:2014-01-03 10:32:30辰龙
日期:2014-03-06 15:04:07
16 [报告]
发表于 2013-04-03 18:56 |只看该作者
wlmouse 发表于 2013-04-03 18:49


直接二分查找a,然后二分查找b。

浮点数只是不能比较相等而已。稍微改良下二分查找算法,找“第一个大于等于a的数字的序号”和“第一个小于等于b的数字的序号”,还不是小菜一碟。


这道题考的是对二分查找算法的掌握程序,以及对知识灵活运用的能力。

论坛徽章:
0
17 [报告]
发表于 2013-04-03 19:01 |只看该作者
回复 16# shan_ghost


    是我想错了吗?好像确实是想多了。

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
18 [报告]
发表于 2013-04-03 19:38 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
19 [报告]
发表于 2013-04-04 00:19 |只看该作者
围观,自己对算法没多少信心。

论坛徽章:
0
20 [报告]
发表于 2013-04-04 17:46 |只看该作者
本帖最后由 flfq 于 2013-04-04 17:50 编辑

这题应不是考的算法吧
而是考的底层知识,比如指针的运用

按理最多移动30次就可以得到结果,一点都不占资源的,几微秒的时间而已

根本用不到递归

我怀疑出题是个学汇编的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP