z******e 发帖数: 11 | 1 考古了一下,对下面几道题比较疑惑,
1. 怎样实现两个integer相乘,不能用乘法,不能用循环,不能用bit-wise
2. sort 10T的数字。怎么设计实现?时间怎么被bound? 和参数的关系?
3. design elevator system
tks. |
l***i 发帖数: 1309 | 2 1. Recursion, use repeated addition to do multiplication. Btw, this problem
looks stupid :)
2. Multiway merge sort, maybe consider disk usage since IO is dominating |
c*****o 发帖数: 178 | 3 第一题可以用在类中声明2个静态变量result,a,每调用一次constructor,result=result+a,然后建立一个b
长度的数组。
这样就实现了a×b。注意overflow的处理。
电梯这道等高人 |
g*******y 发帖数: 1930 | 4 见过只让用bitwise的题,还没见过说不让用的,这有什么意思呢...
ps,A+A+..+A这类的方法比较慢
用个分冶的思路,A*B = A*(B/2)+A*(B-B/2)
只考虑绝对值:
int mul(int A, int B){
if(B==0) return 0;
if(B==1) return A;
int result= mul(A,B/2);
return result + result + (B%2)?A:0;
}
【在 z******e 的大作中提到】 : 考古了一下,对下面几道题比较疑惑, : 1. 怎样实现两个integer相乘,不能用乘法,不能用循环,不能用bit-wise : 2. sort 10T的数字。怎么设计实现?时间怎么被bound? 和参数的关系? : 3. design elevator system : tks.
|
H*M 发帖数: 1268 | 5 lol
how about:
int mul(int A, int B)
{
//base cases
return mul(A, B-1) + A;
}
貌似什么都没用啊
【在 g*******y 的大作中提到】 : 见过只让用bitwise的题,还没见过说不让用的,这有什么意思呢... : ps,A+A+..+A这类的方法比较慢 : 用个分冶的思路,A*B = A*(B/2)+A*(B-B/2) : 只考虑绝对值: : int mul(int A, int B){ : if(B==0) return 0; : if(B==1) return A; : int result= mul(A,B/2); : return result + result + (B%2)?A:0; : }
|
a********a 发帖数: 219 | 6 小肥羊你真的是算法巨擎啊。
【在 g*******y 的大作中提到】 : 见过只让用bitwise的题,还没见过说不让用的,这有什么意思呢... : ps,A+A+..+A这类的方法比较慢 : 用个分冶的思路,A*B = A*(B/2)+A*(B-B/2) : 只考虑绝对值: : int mul(int A, int B){ : if(B==0) return 0; : if(B==1) return A; : int result= mul(A,B/2); : return result + result + (B%2)?A:0; : }
|
g*******y 发帖数: 1930 | 7 你咋晓得我长胖了呢!
啥是巨擎?
说实在的,有句话是半桶水响叮当,我一直当作警句... 不过呢,有时候是考虑到积极
回复题目,也许能到一些人有帮助,我也好多攒些rp吧~
【在 a********a 的大作中提到】 : 小肥羊你真的是算法巨擎啊。
|