热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

计算力扣平台上的汉明距离问题解析与优化算法

本文深入解析了计算力扣平台上汉明距离问题的官方解法,并通过优化算法提高了计算效率。具体而言,我们详细探讨了如何利用位运算技巧来高效计算数组中所有数对之间的汉明距离,从而在时间和空间复杂度上实现了显著改进。通过实例代码演示,使读者能够更直观地理解这一优化方法。

官方的解法

在这里插入图片描述
然后再配上这个代码就一目了然了

class Solution {public int totalHammingDistance(int[] nums) {int len&#61;nums.length;int[] bitCount &#61; new int[32];if(len <&#61; 1){return 0;}for(int numIndex &#61; 0; numIndex < len; numIndex&#43;&#43;){for(int bitIndex &#61; 0; bitIndex < 32; bitIndex&#43;&#43;){bitCount[bitIndex] &#43;&#61; nums[numIndex] & 1;nums[numIndex] &#61; nums[numIndex] >> 1;if(nums[numIndex] &#61;&#61; 0){break;}}}int oneCount &#61; 0;for(int bitIndex &#61; 0; bitIndex < 32; bitIndex&#43;&#43;){oneCount &#43;&#61; bitCount[bitIndex] * (len - bitCount[bitIndex]);}return oneCount;}
}

上边就是用bitCount [bitIndex] 从第0位累加到32位&#xff0c;分别记录数组中每个数字对应的二进制位&#xff0c;然后用官方提供的那种思维 t*(n-t)记录每一组的汉明距离&#xff0c;最后再把32组累加起来就是总的汉明距离了

在这里插入图片描述

int hammingDistance(int x, int y){long long z &#61; (x ^ y);int ret &#61; 0;while (z !&#61; 0) {z &#61; (z & (z - 1));ret&#43;&#43;;}return ret;}int totalHammingDistance(vector<int>& nums){int ret &#61; 0, n &#61; nums.size();// 遍历所有的两两组合for (int i &#61; 0; i < n - 1; i&#43;&#43;) {for (int j &#61; i &#43; 1; j < n; j&#43;&#43;) {ret &#43;&#61; hammingDistance(nums[i], nums[j]);}}return ret;}这是属于暴力求解的方法
再看看官方的解法![在这里插入图片描述](https://img-blog.csdnimg.cn/20200507232753581.png?x-oss-process&#61;image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2RlbGV0ZV9idWc&#61;,size_16,color_FFFFFF,t_70)


推荐阅读
  • 深入解析Android自定义View面试题
    本文探讨了Android Launcher开发中自定义View的重要性,并通过一道经典的面试题,帮助开发者更好地理解自定义View的实现细节。文章不仅涵盖了基础知识,还提供了实际操作建议。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Explore how Matterverse is redefining the metaverse experience, creating immersive and meaningful virtual environments that foster genuine connections and economic opportunities. ... [详细]
  • Docker的安全基准
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文详细探讨了KMP算法中next数组的构建及其应用,重点分析了未改良和改良后的next数组在字符串匹配中的作用。通过具体实例和代码实现,帮助读者更好地理解KMP算法的核心原理。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 深入理解C++中的KMP算法:高效字符串匹配的利器
    本文详细介绍C++中实现KMP算法的方法,探讨其在字符串匹配问题上的优势。通过对比暴力匹配(BF)算法,展示KMP算法如何利用前缀表优化匹配过程,显著提升效率。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
author-avatar
掩飾獨殇_389
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有