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

鞍山网站建设营销电子商务网站的主题及建设目标

鞍山网站建设营销,电子商务网站的主题及建设目标,琼海做网站公司,企业邮箱号码题目描述#xff1a;169. 多数元素 - 力扣#xff08;LeetCode#xff09; 给定一个大小为 n 的数组 nums #xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的#xff0c;并且给定的数组总是存在多数元素。 示…题目描述169. 多数元素 - 力扣LeetCode 给定一个大小为 n 的数组 nums 返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的并且给定的数组总是存在多数元素。 示例  输入nums [2,2,1,1,1,2,2] 输出2 可以使用摩尔投票算法Boyer-Moore Voting Algorithm来解决这个问题它是解决这种类型问题的一种高效算法。它的基本思想是通过不断消除不同元素对的投票来找到出现次数最多的元素。 摩尔投票算法 对于数组来说数组中的每一个元素代表一个候选人该数字出现的次数就是这个候选人的得票数当候选人的投票数超过总票数的一半时该候选人就能当选也就找到了出现次数超过一半的数字 算法思想 因为各个候选人的关系是相互对立的所以对于相互对立的得票可以相互抵消 抵消到最后还有票数的候选人就是当选人了。 当然对立情况可能不是上面的那种情况 显然在这种情况下也可以找到当选人所以这个算法是合理的。 但是如果只是这样做只能找到出现次数最多的数字而这个数字出现的次数不一定超过一半所以找到出现次数最多的数字后还要再进行遍历判断出现次数是否超过一半。 让我通过一个实例来解释这个情况。假设数组为[3, 1, 3, 1, 2, 1, 2]。 使用摩尔投票算法进行步骤演示 初始化候选元素 candidate 3计数 count 1。遍历到元素 1与候选元素不同计数减1count 0。更新候选元素为 1计数为 1。遍历到元素 3与候选元素不同计数减1count 0。更新候选元素为 3计数为 1。遍历到元素 1与候选元素不同计数减1count 0。更新候选元素为 1计数为 1。遍历到元素 2与候选元素不同计数减1count 0。更新候选元素为 2计数为 1。 在这个例子中最后剩下的候选元素是 2但是它并不是出现次数超过一半的元素。实际上数组中没有出现次数超过一半的元素因此摩尔投票算法无法在这种情况下找到多数元素。 这正是为什么要在算法的最后一步进行验证的原因。通过验证候选元素的实际出现次数我们可以确保它是否真的是多数元素。如果验证通过那么候选元素就是多数元素如果验证不通过说明数组中没有多数元素。 在摩尔投票算法的应用中验证是确保算法正确性的重要一步尤其是在出现没有多数元素的情况下。 实现摩尔投票算法的具体步骤如下 初始化候选元素和计数 首先初始化两个变量一个用来存储候选元素candidate另一个用来存储候选元素的计数count。初始时将候选元素设为数组的第一个元素将计数设为1。 遍历数组 从数组的第二个元素开始遍历整个数组。 如果当前元素与候选元素相同将计数加1。如果当前元素与候选元素不同将计数减1。 更新候选元素 在每次计数减到0时说明之前的候选元素和其他元素抵消掉了需要选择新的候选元素。此时将当前元素作为新的候选元素将计数重新设为1。 验证候选元素 遍历完数组后得到的候选元素可能是多数元素但也可能不是。为了验证候选元素是否确实是多数元素再次遍历整个数组统计候选元素的实际出现次数。 确定多数元素 如果候选元素的实际出现次数大于数组长度的一半即超过 ⌊ n/2 ⌋ 次则该候选元素可以被确认为多数元素否则说明没有多数元素存在。 用C语言实现的代码如下 int majorityElement(int* nums, int numsSize) {int candidate 0;int count 0;for (int i 0; i numsSize; i) {if (count 0) {candidate nums[i];count 1;} else if (nums[i] candidate) {count;} else {count--;}}// 验证候选元素是否为多数元素count 0;for (int i 0; i numsSize; i) {if (nums[i] candidate) {count;}}if (count numsSize / 2) {return candidate;}// 实际上题目保证了一定存在多数元素所以不会执行到这里return -1; } 注摩尔算法不仅可以用来找到目标数字如果目标元素是字符也是可以用该算法解题的。 本次内容到此结束了如果你觉得这篇博客对你有帮助的话 希望你能够给我点个赞鼓励一下我。感谢感谢…… 参考资料: 【【算法】摩尔投票法】https://www.bilibili.com/video/BV1Co4y1y7LL?vd_source564abed1c36a31978eb9de7cdc6668d2
http://www.w-s-a.com/news/179464/

相关文章:

  • 青海省高等级公路建设管局网站国内做led灯网站有
  • 做网站成功建设银行网站网址
  • 自动生成网站上海十大活动策划公司
  • 企业网站建设源码HTML论述市场营销对网站设计的影响
  • 网站设计常见问题建设工程网上质检备案网站
  • 网站怎样优化文章关键词建设网站需要钱吗
  • 加强网站建设和管理的通知重庆网站推广产品
  • 网站建设术语解释百度发布信息的免费平台
  • 情公司做的网站seo与网站优化 pdf
  • 做一个购物网站多少钱江阴市住房和城乡建设局网站
  • 网站建设都包括哪些ps怎么做网站首页和超链接
  • 怎样低成本做网站推广编辑网站教程
  • 邯郸网站建设信息网站开发报价人天
  • 王店镇建设中心小学网站酷玛网站建设
  • 网站需求方案wordpress博客主题推荐
  • 网站安全证书过期怎么办那个视频网站最好最全网址
  • 外贸上哪个网站开发客户建行个人网上银行登录入口
  • 空间除了可以做网站还能干什么qq钓鱼网站
  • 网站 技术企业网站用免费程序
  • 做网站的中文名字汕尾网站开发
  • 网站推广效果推广网站推荐
  • 腾讯企业网站建设网络推广比较经典和常用的方法有
  • 四川成都网站网页设计上海外贸网站制作公司
  • wordpress模板首页图片锦州网站做优化
  • 哔哩哔哩网站建设分析有哪些做网站好的公司
  • 福建建设执业中心网站沧州网络推广外包公司
  • 做网站怎么改关键词营销网站建设818gx
  • 广撒网网站怎么进行网络营销
  • 中职计算机网站建设教学计划电商网站如何避免客户信息泄露
  • 惠州微网站建设外贸进出口代理公司