func majorityElement(nums []int) int {
count := 0
num := -1
for i := 0; i < len(nums); i ++ {
if nums[i] == num {
count ++
} else {
count --
if count < 0 {
num = nums[i]
count = 1
}
}
}
return num
}
哈希表
简单明了
func majorityElement(nums []int) int {
mp := make(map[int]int)
for i := 0; i < len(nums); i++ {
mp[nums[i]] ++
if mp[nums[i]] > len(nums)/2 {
return nums[i]
}
}
return nums[len(nums)]
}
另外还可以使用排序来做,不过感觉不如以上两种~
二刷
第一次还是只会哈希表:
func majorityElement(nums []int) int {
n := len(nums)
mp := make(map[int]int)
for i := 0; i < n; i ++ {
mp[nums[i]]++
if mp[nums[i]] > n / 2 {
return nums[i]
}
}
return -1
}
func majorityElement(nums []int) int {
cnt := 0
num := -1
for i := 0; i < len(nums); i ++ {
if num == nums[i] {
cnt ++
} else {
cnt --
if cnt < 0 {
num = nums[i]
cnt = 1
}
}
}
return num
}