溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php計算漢明距離總和的示例分析

發(fā)布時間:2021-07-10 09:28:06 來源:億速云 閱讀:129 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“php計算漢明距離總和的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“php計算漢明距離總和的示例分析”這篇文章吧。

兩個整數(shù)的漢明距離指的是這兩個數(shù)字的二進制數(shù)對應(yīng)位不同的數(shù)量。

計算一個數(shù)組中,任意兩個數(shù)之間漢明距離的總和。

實例

輸入: 4, 14, 2
輸出: 6
解釋:在二進制表示中,4表示為0100,14表示為1110,2表示為0010。(這樣表示是為了體現(xiàn)后四位之間關(guān)系)
所以答案為:HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14, 2) = 2 + 2 + 2 = 6.

注意:

數(shù)組中元素的范圍為從 0到 10^9。數(shù)組的長度不超過 10^4。

解題思路 1

窮舉兩兩組合的數(shù)量,然后累加漢明距離,這個是最簡單直白的方案。

結(jié)果是大量數(shù)據(jù)的時候會超時,階乘的數(shù)量太多。

class Solution {
 
    /**
 
    * @param Integer[] $nums
 
    * @return Integer
 
    */
 
    function totalHammingDistance($nums) {
 
        $count = count($nums);
 
        $sum = 0;
 
        for ($i = 0; $i < $count - 1; $i++) {
 
            for ($j = $i+1; $j < $count; $j++)
 
            {
 
                $sum += $this->hm($nums[$i], $nums[$j]);
 
            }
 
        }
 
        return $sum;
 
    }
 
    // 漢明距離方法
 
    function hm($x, $y)
 
    {
 
        return substr_count(decbin($x ^ $y), '1');
 
    }}

以上是“php計算漢明距離總和的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI