给定一个大小为 n 的数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。
说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1)。
示例 1:
输入: [3,2,3] 输出: [3]
示例 2:
输入: [1,1,1,3,3,2,2,2] 输出: [1,2]
思路:使用map
func majorityElement(nums []int) []int {
times := len(nums)/3
res := []int{}
maps := make(map[int]int)
for _,v := range nums{
if _, ok := maps[v]; ok {
maps[v] += 1
} else{
maps[v] = 1
}
}
for k,v := range maps{
if v > times{
res = append(res, k)
}
}
return res
}

博客围绕在大小为n的数组中找出所有出现超过n/3次的元素展开,要求算法时间复杂度为O(n),空间复杂度为O(1),并给出了示例,思路是使用map来解决该问题。
527

被折叠的 条评论
为什么被折叠?



