面试算法题
1、取素数 2种方法,普通方法, sqrt方法
2、从有序数列[2,3,4,5,6,8,9,13]中取数据对,满足2者之和是10.
从有序角度看的话
temp=num.length-1
newtemp=um.length-1
for(i=0;i<num.length;i++)
vaule=10-a[I]
temp=newtemp
For (temp;temp>I;temp—)
If (a[temp]==value)
print x,y=a[I],a[temp]
newtemp=temp;
Break;
3、 int random()= 0 or 1 随机。调用这个函数实现【1,1000】随机出现
方法1、 投硬币方式,
count=0
for (int i=0;i<1000;i++)
If (random==1)
count++
Return count // 1000范围内随机出现的数据
方法2 按照个十百千的位数来单个取数据。
Def ele():// 获取一个位数的一个随机数据, 获取3次。 千分位上去0,1 两个数据
for (int=0; I<10;i++)
If (random==1)
count++
Return count
Final 输出是:1000random()+100ele()+10*ele()+ele()
方法3: 基于二进制的方法
210= 1024
所以按照位数 9位二进制 来计算29random()+28random() ….
依次优化这个算法。
网友评论