兩個整數的 漢明距離 指的是這兩個數字的二進位制數對應位不同的數量。
計算乙個陣列中,任意兩個數之間漢明距離的總和。原題
示例:輸入: 4, 14, 2
輸出: 6
解釋: 在二進位制表示中,4表示為0100,14表示為1110,2表示為0010。(這樣表示是為了體現後四位之間關係)
所以答案為:
hammingdistance(4, 14) + hammingdistance(4, 2) + hammingdistance(14, 2) = 2 + 2 + 2 = 6.
注意:陣列中元素的範圍為從 0到 10^9。
陣列的長度不超過 10^4。
思路分析:
看到題意第一想法就是遍歷陣列,巢狀乙個for迴圈雙重遍歷進行比較。但是明顯時間複雜度是o(n^2),陣列長度到達10^4級別,肯定不能接受,執行超時。
類似的遍歷比較,如果轉變思維,從逐一數字的橫向比較,轉變為縱向的逐位比較,往往有不一樣的效果。
對於每乙個數的某一位來說,若當前位為 1,那麼對於當前位來說,所有數字的同位上為 0 的個數即當前數字當前位的漢明距離。遍歷完之後,對於32位陣列中存在 1 的元素與(問題陣列長度-32位陣列當前元素值)做乘積,得到的結果便是原問題陣列中某一元素的某一位二進位制與其他任意元素對應的二進位制位的漢明距離之和
對於本題來說,記錄所有數字的每一位的0 1情況,再遍歷32位即可。
class solution ;
int b=nums.size();
for(int i=0;i>=1;
c++;}}
for(int i=0;i<32;++i)
return (int)sum;
}};
漢明距離總和
題目 兩個證書的漢明距離指的是這兩個數字的二進位制數對應值不同的數量。計算乙個陣列中,任意兩個數之間漢明距離的總和。示例 輸入 4,14,2 輸出 6 解釋 在二進位制表示中,4表示為0100,14表示為1110,2表示為0010。這樣表示是為了提現後四位之間的關係 所以答案為 hammingdis...
477 漢明距離總和
兩個整數的 漢明距離 指的是這兩個數字的二進位制數對應位不同的數量。計算乙個陣列中,任意兩個數之間漢明距離的總和。示例 輸入 4,14,2 輸出 6 解釋 在二進位制表示中,4表示為0100,14表示為1110,2表示為0010。這樣表示是為了體現後四位之間關係 所以答案為 hammingdista...
43 漢明距離總和
題目描述 兩個整數的 漢明距離 指的是這兩個數字的二進位制數對應位不同的數量。計算乙個陣列中,任意兩個數之間漢明距離的總和。示例 輸入 4,14,2 輸出 6 解釋 在二進位制表示中,4表示為0100,14表示為1110,2表示為0010。這樣表示是為了體現後四位之間關係 所以答案為 hamming...