之前去一家公司去面试,面试题是:给一个任意长度的数组,该数组里都是数字,任意两个相加等于12,就返回true.
下面是我写的算法:
我是用AS3语言写的:
package
{
import flash.display.Sprite;
import flash.utils.getTimer;
public class count extends Sprite
{
private var _vec:Vector.<int>=new Vector.<int>;
public function count()
{
_vec.push(1);
_vec.push(2);
_vec.push(3);
_vec.push(4);
_vec.push(5);
_vec.push(6);
_vec.push(7);
_vec.push(8);
_vec.push(9);
var delay:int=getTimer();
trace(check(_vec));
delay=getTimer()-delay;
trace("need Timer:",delay);
}
private function check(vec:Vector.<int>):Boolean
{
var value:int;
var vec1:Vector.<int>;
var vecCom:Vector.<int>;
for(var i:int=0;i<vec.length;i++)
{
value=vec[i];
vecCom=vec.concat();
vec1=vec.slice(i+1,vec.length);
for(var j:int=0;j<vec1.length;j++)
{
if(value+vec1[j]==12)
{
trace(value,vec1[j]);
return true;
}
}
}
return false;
}
}
}