剑指 Offer 39. 数组中出现次数超过一半的数字

类似力扣169. 多数元素

  1. //摩尔投票法 时间复杂度O(N) 空间复杂度O(1)
  2. func majorityElement(nums []int) int {
  3. major := 0
  4. count := 0
  5. for _, num := range nums {
  6. if count == 0 {
  7. major = num // 当前票数最多的候选人 = 当前人,总会有个一票的候选人,类似前缀和
  8. }
  9. if major == num {
  10. count++ // 其 +获得的 -抵消后 = 票数
  11. } else {
  12. count--
  13. }
  14. }
  15. return major
  16. }