📑 题目:169. 多数元素

🚀 本题 LeetCode 传送门

题目大意

给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。

解题思路

代码

  1. package leetcode
  2. // 解法一 时间复杂度 O(n) 空间复杂度 O(1)
  3. func majorityElement(nums []int) int {
  4. res, count := nums[0], 0
  5. for i := 0; i < len(nums); i++ {
  6. if count == 0 {
  7. res, count = nums[i], 1
  8. } else {
  9. if nums[i] == res {
  10. count++
  11. } else {
  12. count--
  13. }
  14. }
  15. }
  16. return res
  17. }
  18. // 解法二 时间复杂度 O(n) 空间复杂度 O(n)
  19. func majorityElement1(nums []int) int {
  20. m := make(map[int]int)
  21. for _, v := range nums {
  22. m[v]++
  23. if m[v] > len(nums)/2 {
  24. return v
  25. }
  26. }
  27. return 0
  28. }