3 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超6個(gè)贊
你沒(méi)有增加復(fù)雜性……但你確實(shí)讓它變慢了。表達(dá)式 pow(10, numOfDigits - 1)
將大大慢于reverse = mod + (reverse * 10)
Math.pow
由于浮點(diǎn)不精確,使用代替整數(shù)乘法的計(jì)算也可能不準(zhǔn)確。Adouble
的精度只有 52 位,而 a 的精度為 63 位long
。在這個(gè)例子中,這可能不適用,但一般來(lái)說(shuō)這是需要警惕的

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
可能,這將是具有較少迭代和復(fù)雜性的最佳方法:
public class NumReverse {
public long reverseNumber(long number){
long reverse = 0;
while(number != 0){
reverse = (reverse*10)+(number%10);
number = number/10;
}
return reverse;
}
public static void main(String a[]){
System.out.println("Reversed is: "+new NumReverse().reverseNumber(103));
}
}

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
計(jì)算乘法次數(shù)和加法次數(shù):
假設(shè) f(x) = an * x^n + an-1 * x^n-1 + ... + a1 * x + a0
1. 如果通過(guò)計(jì)算 1 來(lái)計(jì)算 f(x)一項(xiàng)一項(xiàng),
它將需要 (n+1) + n + (n-1) + ... + 1 + 0 = (n+1)(n+2)/2 次乘法和 n 次加法。
2. 如果通過(guò) 計(jì)算 f(x) n = n*10 + mod
,
則需要 n 次乘法和 n 次加法。
當(dāng)然,如果pow()
有一些優(yōu)化,比如“分而治之”,復(fù)雜度pow()
應(yīng)該是O(logN)。
添加回答
舉報(bào)