169.go 484 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package main
  2. import (
  3. "fmt"
  4. )
  5. func majorityElementOld(nums []int) int {
  6. m := map[int]int{}
  7. n := int(len(nums) / 2)
  8. for _, v := range nums {
  9. m[v]++
  10. if m[v] > n {
  11. return v
  12. }
  13. }
  14. return 0
  15. }
  16. // ~ little trick
  17. func majorityElement(nums []int) int {
  18. var cnt = 0
  19. var num int
  20. for _, v := range nums {
  21. if cnt == 0 {
  22. num = v
  23. }
  24. if v == num {
  25. cnt++
  26. } else {
  27. cnt--
  28. }
  29. }
  30. return num
  31. }
  32. func main() {
  33. arr := []int{1, 1, 3}
  34. fmt.Println(majorityElement(arr))
  35. }