摘要: 一开始介绍项目,最后的反馈是,还是说得不清楚,需要再准备准备。然后两道题,第一题是有个数组,有2*n个数字,从1~n。比如n=3的数组,{1,2,2,3,1,3}。然后两两相同的数字删除,每次删除得到这两个数字的距离作为分数,最后得到分数的和,求能得到最大的分数。比如这里先消除1,然后2,3,这样分数是3+0+0,为0。那么首先判断出brute force的复杂度太高。之后就贪心,虽然暂时无法证明它是对的,但感觉是对的,还是继续做了(贪心是对的,其实每次把有包含关系的先取外层再取里层就行了)。那么n次遍历,每次得到距离最大的数字对,然后mark为-1表示删除了。但是当时觉得得到距离最大的数字对 阅读全文
posted @ 2013-12-28 21:31 阿牧遥 阅读(243) 评论(0) 推荐(0)
摘要: 假设我们有一个全局升序数组,这个数组长度unlimited现在我们有一个全局的指针和一个目标target值,target和指针你不可见。但是有以下几个操作bool istag();void goright();void goleft();我们保证target一定存在。一开始指针指向值为0的位置。问题:1.你能否找到这个target2.请写出你的算法和计算时间复杂度。下面是现场写的代码,基本思路是倍增。(如果不是倍增,比如每次回到原点再加一走,是N^2的。) 注意如果为了分析复杂度方便,可以不直接*2折返,可以先回到原点再*2走。bool search() { int step = 1; ... 阅读全文
posted @ 2013-12-28 20:41 阿牧遥 阅读(170) 评论(0) 推荐(0)