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

局域网建立网站教程wordpress代码缩进

局域网建立网站教程,wordpress代码缩进,简约网站后台,制作灯笼的手工做法简单漂亮原理 摩尔投票法(Boyer-Moore Voting Algorithm)是一种用于在存在多数元素的数组中,高效找出出现次数超过数组长度一半的元素的算法。其核心思想是通过元素抵消策略,逐步缩小候选范围,最终确定多数元素。 核心假设&a…
原理

摩尔投票法(Boyer-Moore Voting Algorithm)是一种用于在存在多数元素的数组中,高效找出出现次数超过数组长度一半的元素的算法。其核心思想是通过元素抵消策略,逐步缩小候选范围,最终确定多数元素。

核心假设:数组中必须存在一个出现次数超过一半的元素(即多数元素)。若该条件不满足,算法返回的结果可能无效,需额外验证。

抵消机制

  • 遍历数组时,维护一个候选元素 candidate 和计数器 count
  • 若当前元素与候选元素相同,count 增加;否则 count 减少。
  • count 归零时,说明之前选择的候选元素被完全抵消,此时重新选择当前元素作为候选。
  • 由于多数元素数量占优,最终未被抵消的候选元素必为多数元素。

直观解释
假设多数元素与其他元素“两两抵消”,由于多数元素数量超过半数,最终至少会剩一个未被抵消的多数元素。

复杂度分析
  • 时间复杂度 O ( N ) O(N) O(N),仅需一次遍历。
  • 空间复杂度 O ( 1 ) O(1) O(1),仅使用常数变量。

Golang 实现与优化
package main// majorityElement 使用摩尔投票法寻找多数元素,需确保输入存在多数元素
func majorityElement(nums []int) int {if len(nums) == 0 {panic("数组不能为空") // 处理空数组(根据场景可选)}candidate := nums[0]count := 1for i := 1; i < len(nums); i++ {if count == 0 {candidate = nums[i] // 重置候选元素count = 1} else if nums[i] == candidate {count++} else {count--}}// 可选:验证候选元素是否真的是多数元素// if verify(nums, candidate) { ... }return candidate
}// 验证函数(确保结果正确性)
func verify(nums []int, candidate int) bool {cnt := 0for _, num := range nums {if num == candidate {cnt++}}return cnt > len(nums)/2
}

代码解释

  1. 初始化:以首个元素为初始候选,计数器设为1。
  2. 遍历逻辑
    • 计数器归零时,重新选定候选。
    • 元素匹配则计数增加,否则减少。
  3. 验证步骤(推荐):若输入数组可能不满足多数元素条件,需二次遍历验证。

测试与边界案例
func main() {testCases := []struct {nums     []intexpected int}{{[]int{2, 2, 1, 1, 1, 2, 2}, 2},     // 常规多数{[]int{3}, 3},                       // 单元素数组{[]int{5, 5, 5, 2, 2}, 5},           // 多数元素连续出现{[]int{4, 4, 2, 4, 3, 4, 4, 3}, 4}, // 复杂分布}for _, tc := range testCases {result := majorityElement(tc.nums)if result != tc.expected {fmt.Printf("测试失败:输入%v,预期%d,得到%d\n", tc.nums, tc.expected, result)} else {fmt.Printf("测试通过:输入%v,结果%d\n", tc.nums, result)}}
}

算法局限性及扩展
  1. 必须存在多数元素:若数组中不存在满足条件的元素,算法可能返回错误结果。例如输入 [1,2,3] 会返回3,但实际3并未超过半数。此时需通过验证步骤排除无效结果。
  2. 扩展应用
    • 寻找出现次数超过 n/3 的元素:可维护两个候选元素和计数器,每次抵消三个不同元素。例如,LeetCode 229题(求众数 II)即采用此变种。
    • 泛化到 n/k 的情况:需维护 k-1 个候选,但实际应用较少。

总结
  • 适用场景:快速查找绝对多数元素,尤其适合大数据流或内存受限环境。
  • 关键点:抵消思想、候选重置机制、结果验证。
  • 工业应用:选举计票、日志高频错误分析等需高效统计的场景。
http://www.dtcms.com/a/444824.html

相关文章:

  • 黄石做网站公司iis添加网站ip地址
  • 合肥网站建设新浪营销铜仁 网站开发
  • 网站建设html实训心得织梦网站地图如何做
  • 建站代理平台河北建设秦皇岛分公司
  • 杭州住房城乡建设网站查询深圳品牌策划培训
  • 做暧在线网站徐州百度竞价排名
  • 深圳外贸企业网站建设wordpress大家都用什么主题
  • 做网站字体如何设计网站步骤
  • 网站后台内容不更新网站的ip地址是什么
  • 网站开发的硬件设备漳州 网站建设多少钱
  • 搭建钓鱼网站教程建设网站用什么语言比较好
  • 朝阳区网站建设公司做特殊任务的网站
  • 内蒙古包头网站建设wordpress用哪个国外空间
  • 做海报的网站小白qq开发一个小程序大概要多少钱
  • 深圳设计网站排行wordpress 获取父页面
  • 找潍坊做网站的建设厅科技中心网站首页
  • 做旅游计划上哪个网站外贸网站购买云服务器多少钱
  • 广州网站注销备案wordpress套模板
  • 网站后台上传图片无法显示建设企业网站哪家好
  • VIP视频网站有得做吗开发网站的好处
  • 如何查看网站是否被百度收录广东东莞回来要隔离吗
  • 克隆网站怎么做后台网站推广的分类
  • wordpress后台怎么登陆山东专业网站seo
  • 网站设计的含义厦门做百度推广的网站
  • 调整百度对网站的最大天级抓取频次值建站技巧
  • 云南网站建设专家团员电子档案查询网
  • 兰州网站制作cheng学校网站建设分工
  • 做一家网站的成本高端网站建设四川
  • 网站管理与维护如何去除hao123主页
  • 自己的网站怎么开王也天个人资料