给你两个正整数求他们的乘积,要求不用*运算符。
方法一:累加求和
最朴素的思想, a * b = b 个 a 相加
时间复杂度为O(n)
long mul(int a, int b) {long ans = 0;while (b > 0) {ans += a;b--;}return ans;}
方法二:龟速乘
采用倍增思想,结合2的幂。时间复杂度为O(logn)
long mul(int a, int b) {long ans = 0;while (b > 0) {if ((b & 1) == 1) {ans += a;}a += a;b >>= 1;}return ans;}
