摘要: 最近設計知識管理系統的資源導入功能,為了盡量的做到組件化,方便擴展,方便其他模塊使用。簡化組件提供的和需要的接口,設計并實現了基于 Mapping 機制的導入框架。其中有一功能用到了計算兩個字符串相似度的算法。 閱讀全文
數學&算法
涵蓋 MS,IBM 等公司面試算法題目,以及經典算法的 java 實現
摘要: 階乘是個很有意思的東西,可能很多朋友看到關于他的計算就怕了,其實沒什么,看完下面兩個問題您應該有低了。
1. 給定一個 N ,求出N!末尾有多少個零,比如 N=10,N!=3628800,N!末尾有兩個零。
2. 求N!的二進制表示中最低為1的位置,比如 11010010, 最低為1的位置為2。
問題一解法:
在上一個 blog 中介紹的子數組乘積最大值的問題中,有朋友考慮到溢出的問題,在這個問題中,我們從那些數相乘能得到10這個命題開始思考。比如N!=K×10m那么N!后面就有m個零。這個問題轉化為將N!進行分解,如N!=2a×3b×5c 很顯然 10=2×5,那么零的個數m=min(a,c), 一個數能夠被2整除的機率比5要大很多因此 m=c,因此轉化為求 c的問題,具體算法如:
閱讀全文
1. 給定一個 N ,求出N!末尾有多少個零,比如 N=10,N!=3628800,N!末尾有兩個零。
2. 求N!的二進制表示中最低為1的位置,比如 11010010, 最低為1的位置為2。
問題一解法:
在上一個 blog 中介紹的子數組乘積最大值的問題中,有朋友考慮到溢出的問題,在這個問題中,我們從那些數相乘能得到10這個命題開始思考。比如N!=K×10m那么N!后面就有m個零。這個問題轉化為將N!進行分解,如N!=2a×3b×5c 很顯然 10=2×5,那么零的個數m=min(a,c), 一個數能夠被2整除的機率比5要大很多因此 m=c,因此轉化為求 c的問題,具體算法如:
閱讀全文
摘要: 給定一個長度為N的整數數組,只允許用乘法,計算任意(N-1)個數的組合乘積中最大的一組,并
寫出算法的時間復雜度。 閱讀全文
寫出算法的時間復雜度。 閱讀全文
摘要: 給定一個十進制數N,寫下從1開始,到N的所有整數,然后數一下其中出現的所有"1"的個數。
例如:
N=2,寫下1,2。這樣只出現了1個"1"
N=12,寫下 1,2,3,4,5,6,7,8,9,10,11,12。這樣"1"的個數是5
請寫出一個函數,返回1到N之間出現"1"的個數,比如 f(12)=5 閱讀全文
例如:
N=2,寫下1,2。這樣只出現了1個"1"
N=12,寫下 1,2,3,4,5,6,7,8,9,10,11,12。這樣"1"的個數是5
請寫出一個函數,返回1到N之間出現"1"的個數,比如 f(12)=5 閱讀全文
摘要: 在這之前,先介紹一下負載因子和容量的屬性。大家都知道其實一個 HashMap 的實際容量就 因子*容量,其默認值是 16×0.75=12; 這個很重要,對效率很一定影響!當存入HashMap的對象超過這個容量時,HashMap 就會重新構造存取表。這就是一個大問題,我后面慢慢介紹,反正,如果你已經知道你大概要存放多少個對象,最好設為該實際容量的能接受的數字。 閱讀全文
摘要: 一個對象的HashCode就是一個簡單的Hash算法的實現,雖然它和那些真正的復雜的Hash算法相比還不能叫真正的算法,它如何實現它,不僅僅是程序員的編程水平問題,而是關系到你的對象在存取是性能的非常重要的關系.有可能,不同的HashCode可能會使你的對象存取產生,成百上千倍的性能差別。
閱讀全文
閱讀全文