您的位置:首页 > 新闻 > 会展 > 致设计网站官网_免费建站系统wordpress_手游推广平台_怎么样引流加微信

致设计网站官网_免费建站系统wordpress_手游推广平台_怎么样引流加微信

2025/5/13 21:23:06 来源:https://blog.csdn.net/wy990880/article/details/147640674  浏览:    关键词:致设计网站官网_免费建站系统wordpress_手游推广平台_怎么样引流加微信
致设计网站官网_免费建站系统wordpress_手游推广平台_怎么样引流加微信

 169. 多数元素
 

 核心思想(Boyer-Moore 投票算法):

  • 解题思路:可以使用 Boyer-Moore 投票算法、该算法的核心思想是:

    • 维护一个候选元素和计数器、初始时计数器为 0。

    • 遍历数组:

      • 当计数器为 0 时、设置当前元素为候选元素。

      • 如果当前元素等于候选元素、计数器加 1。否则、计数器减 1

    • 最终、候选元素即为多数元素。

思路类比:士兵打仗(两军对抗)

假设:

  • 每个数是一名士兵、士兵可能来自甲军(候选元素)或乙军(非候选元素)

  • 每当我们遇到一个士兵:

    • 如果他是甲军、我们 +1。

    • 如果他是乙军、我们 -1(理解为与甲军一人同归于尽)。

  • 一旦计数为0、说明甲军原来的优势被抵消了、我们重新选择当前的士兵作为新的候选(也就是新的甲军)。

由于题目保证多数元素存在(出现次数 > n/2)、那么无论中间怎样对冲、最后剩下的那个一定是甲军士兵(多数元素)

class Solution {public int majorityElement(int[] nums) {int count = 0;int candidate = 0;for (int num : nums) {if (count == 0) {candidate = num;}if (num == candidate) {count++;} else {count--;}}return candidate;}
}

这个算法的时间复杂度是 O(n)空间复杂度是 O(1)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com