当前位置: 首页 > news >正文

Boyer-Moore 投票算法

这里先贴题目:

Boyer-Moore 投票算法:

通俗点来讲,就是占领据点,像攻城那样,对消。

当你的据点有人时对消,无人时就占领。

 这道题使用该算法可实现时间复杂度为O(n),空间复杂度为O(1),接下来看代码:

int majorityElement(int* nums, int numsSize) {int amzing = nums[0];int count = 0;for (int i = 0; i < numsSize; i++){if (amzing == nums[i])count++;else if (count == 0){amzing = nums[i];count++;}elsecount--;}return amzing;
}

 我们定义一个amzing先记录数组第一个数字,并且数量为0,然后遍历整个数组,当count不为0时,数字不同时相消,数字相同时增加,当count为0时,amzing换其他数字,再增加数量。

通俗点讲:定义一个士兵,数量为0,遍历所有人,当count不为0,如果数字不同,就是遇到敌人,同归于尽,数字相同,遇到友军就加入。当count等于0,据点无人,哪个数字也可以占领。但是有一个阵营的人数占了大半,无论怎么对拼相消,剩下的一定是那个阵营的,也就是那个大半的数字。 

排序:

int cmp(void* p1,void* p2)
{return *(int*)p1 - *(int*)p2;
}int majorityElement(int* nums, int numsSize){qsort(nums,numsSize,4,cmp);return nums[numsSize/2];
}

http://www.lryc.cn/news/97892.html

相关文章:

  • C# 翻转二叉树
  • RocketMQ教程-(5)-功能特性-消费者分类
  • Kafka原理剖析
  • word怎么转换成pdf?分享几种转换方法
  • 基于XDMA 中断模式的 PCIE3.0 QT上位机与FPGA数据交互架构 提供工程源码和QT上位机源码
  • Vue 中通用的 css 列表入场动画效果
  • 微分流形2:流形上的矢量场和张量场
  • C++数组、向量和列表的练习
  • 视频剪辑矩阵分发系统Unable to load FFProbe报错技术处理?
  • Docker轻量级可视化工具Portainer
  • 功率放大器在电光调制中的应用有哪些
  • MyBatis入门程序
  • C++快速切换 头文件和源文件
  • 对原型、原型链的理解
  • 7月26日,每日信息差
  • git修改已经push后的commit注释
  • 网络云存储服务器,数据库服务器|PetaExpress
  • java语法基础--基本数据类型
  • uniapp 微信小程序 预览pdf方法
  • 基于vue+uniapp微信小程序公司企业后勤服务(设备)系统
  • Linux命令(54)之blkid
  • Kotlin多平台最佳架构指南
  • 【Vue3】父子组件传参
  • 简单上手FineBI
  • 066、故障处理之热点问题
  • C/C++常用宏归纳
  • 在Windows 10/11 上安装GNS3模拟器
  • React Route5 路由
  • 海尔设计借助亚马逊云科技生成式AI,实现端到端的云上工业设计解决方案
  • python数据结构和字符串用法