//答案**
//[/** * 描述
* 設計乙個演算法,計算出n階乘中尾部零的個數
* * 您在真實的面試中是否遇到過這個題?
* 樣例
* 11! = 39916800,因此應該返回 2
* * 挑戰
* o(logn)的時間複雜度
* 小結
從最終的**來看,問題是挺簡單的。之所以折騰這麼久都沒有切入要害,直接做到真正的時間複雜度為o(logn)的效果,個人覺得是因為從分析題目的時候就沒有真正理解o(logn)的真正含義。
類似於二叉搜尋樹,從根節點開始比較,比根節點小則與左子樹比較,比根節點大則與右子樹比較,相等或到達葉子節點則退出。如此迴圈迭代。
*/public
class
trailingzeros
}return m;
}//第二種時間複雜度位o(n/5)-=o(n)
public
long
trailingzeros2(long n)
}return m;
}//第三種時間複雜度位o(logn)每次減少1/5
public
long
trailingzeros3(long n)
return m;
}public
static
void
main(string args)
}
LintCode 2 尾部的零
問題描述設計乙個演算法,計算出n階乘中尾部零的個數 樣例 11 39916800,因此應該返回 2 問題分析按正常的思路看,第一步 把 n 求出。第二步 用得到的這個數取餘10的倍數,從10開始,再到100,再到 n 10 餘數為0,計數器加1,直到餘數不為零結束,返回計數器數值。於是有了如下 cl...
LintCode 2 尾部的零
設計乙個演算法,計算出n階乘中尾部零的個數 您在真實的面試中是否遇到過這個題?yes樣例11 39916800 因此應該返回 2 解題思路 要求n的階乘,就是求1到n這n個數相乘。在這1到n個數當中,只有2和5相乘的結果才會出現0,其中10的倍數也可以看做是2和5相乘的結果,所以,可以在1到n之間看...
Lintcode 2 尾部的零
問題描述 設計乙個演算法,計算出n階乘中尾部零的個數 樣例說明 樣例 1 輸入 11 輸出 2 樣例解釋 11 39916800,結尾的0有2個。樣例 2 輸入 5 輸出 1 樣例解釋 5 120,結尾的0有1個。3.思路 根據題目要求,輸入的n是乙個長整型的數。我們想要求階乘尾部零的個數,那麼這時...