电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

php計算漢明距離總和的實例講解

瀏覽:5日期:2022-09-06 17:06:21

兩個整數的漢明距離指的是這兩個數字的二進制數對應位不同的數量。

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

實例

輸入: 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。

解題思路

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

結果是大量數據的時候會超時,階乘的數量太多。

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’); }}

思路擴展:

解題思路擴展

咱們常常會這樣分析問題:最簡單的狀況 -> 通常的、復雜的狀況。以前咱們是:遍歷全部可能的兩兩組合。

如今咱們換一個角度看:若是int只有1位-> int有32位。leetcode

首先,若是 int 只有 1 位,即數組 nums 中的元素只有兩種狀況,0 或者 1,此時求漢明距離總和的步驟以下:get

首先將數組分紅兩組,全 0 位一組,全 1 位一組

將兩組數兩兩組合,記一個為a,一個為b

若是 a、b 均來自 0 那一組,或者均來自 1 那一組,此時不會有漢明距離產生。可是若是 a、b 一個來自 0 那一組,另一個來自1那一組,這時將會產生漢明距離

假設 nums 數組元素個數為 n,其中 0 元素個數為 k,則 1 元素的個數為 n-k,則上一步可以產生漢明距離的總和就是k*(n-k)

k*(n-k) 就是 int 只有 1 位的狀況下的漢明距離總和

若是將 int 的位數從 1 位擴展到 32 位,那么就是將遍歷每一位,而后求出在這一位上的漢明距離和,累加到一塊兒,這樣能夠將算法復雜度從 $O(N^2)$ 下降到 $O(32times N)$,即為 $O(N)$。

能夠看下面這個例子:

十進制 二進制

4: 0 1 0 0

14: 1 1 1 0

2: 0 0 1 0

1: 0 0 0 1

先看最后一列,有三個 0 和一個 1,那么它們之間相互的漢明距離就是 3,即 1 和其余三個 0 分別的距離累加,而后在看第三列,累加漢明距離為 4,由于每一個 1 都會跟兩個 0 產生兩個漢明距離,同理第二列也是 4,第一列是 3。各列相互之間兩兩組合的漢明距離總和就是各列 0 的個數與 1 的個數之和,把各列漢明距離總和再累加就是題目所求的數組 nums 元素兩兩之間的漢明距離總和。

代碼

class Solution {/*** @param Integer[] $nums* @return Integer*/function totalHammingDistance($nums) {$count = count($nums);$sum = 0;for($i = 0; $i < 32; $i++){$tmpCount = 0;for($j = 0; $j < $count; $j++)$tmpCount += ($nums[$j] >> $i) & 1;}$sum += $tmpCount * ($count - $tmpCount);}return $sum;}}

到此這篇關于php計算漢明距離總和的實例講解的文章就介紹到這了,更多相關php計算漢明距離總和的方法內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: PHP
相關文章:
主站蜘蛛池模板: 无锡装修装潢公司,口碑好的装饰装修公司-无锡索美装饰设计工程有限公司 | 医学动画公司-制作3d医学动画视频-医疗医学演示动画制作-医学三维动画制作公司 | 粘度计维修,在线粘度计,二手博勒飞粘度计维修|收购-天津市祥睿科技有限公司 | 电梯乘运质量测试仪_电梯安全评估测试仪-武汉懿之刻 | 石家庄装修设计_室内家装设计_别墅装饰装修公司-石家庄金舍装饰官网 | 企业VI设计_LOGO设计公司_品牌商标设计_【北京美研】 | 申江储气罐厂家,储气罐批发价格,储气罐规格-上海申江压力容器有限公司(厂) | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 北京开源多邦科技发展有限公司官网 | 气胀轴|气涨轴|安全夹头|安全卡盘|伺服纠偏系统厂家-天机传动 | 上海平衡机-单面卧式动平衡机-万向节动平衡机-圈带动平衡机厂家-上海申岢动平衡机制造有限公司 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 食品质构分析仪-氧化诱导分析仪-瞬态法导热系数仪|热冰百科 | 临时厕所租赁_玻璃钢厕所租赁_蹲式|坐式厕所出租-北京慧海通 | 艺术涂料_进口艺术涂料_艺术涂料加盟_艺术涂料十大品牌 -英国蒙太奇艺术涂料 | 石栏杆_青石栏杆_汉白玉栏杆_花岗岩栏杆 - 【石雕之乡】点石石雕石材厂 | 质检报告_CE认证_FCC认证_SRRC认证_PSE认证_第三方检测机构-深圳市环测威检测技术有限公司 | 无硅导热垫片-碳纤维导热垫片-导热相变材料厂家-东莞市盛元新材料科技有限公司 | 一体化预制泵站-一体化提升泵站-一体化泵站厂家-山东康威环保 | 北京网站建设首页,做网站选【优站网】,专注北京网站建设,北京网站推广,天津网站建设,天津网站推广,小程序,手机APP的开发。 | 粉丝机械,粉丝烘干机,粉丝生产线-招远市远东粉丝机械有限公司 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 聚丙烯酰胺PAM-聚合氯化铝PAC-絮凝剂-河南博旭环保科技有限公司 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | YJLV22铝芯铠装电缆-MYPTJ矿用高压橡套电缆-天津市电缆总厂 | 卫生人才网-中国专业的医疗卫生医学人才网招聘网站! | 护腰带生产厂家_磁石_医用_热压护腰_登山护膝_背姿矫正带_保健护具_医疗护具-衡水港盛 | 工程管道/塑料管材/pvc排水管/ppr给水管/pe双壁波纹管等品牌管材批发厂家-河南洁尔康建材 | 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | 有源电力滤波装置-电力有源滤波器-低压穿排电流互感器|安科瑞 | DWS物流设备_扫码称重量方一体机_快递包裹分拣机_广东高臻智能装备有限公司 | 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 东莞精密模具加工,精密连接器模具零件,自動機零件,冶工具加工-益久精密 | ORP控制器_ORP电极价格-上优泰百科 | IP检测-检测您的IP质量| 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 杭州双螺杆挤出机-百科| 烘干设备-热泵烘干机_广东雄贵能源设备有限公司 | 铁素体测量仪/检测仪/铁素体含量测试仪-苏州圣光仪器有限公司 | PC构件-PC预制构件-构件设计-建筑预制构件-PC构件厂-锦萧新材料科技(浙江)股份有限公司 | 山东聚盛新型材料有限公司-纳米防腐隔热彩铝板和纳米防腐隔热板以及钛锡板、PVDF氟膜板供应商 |