C/C++教程

LeetCode-229. 求众数 II

本文主要是介绍LeetCode-229. 求众数 II,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。

示例 1:

输入:[3,2,3]
输出:[3]
示例 2:

输入:nums = [1]
输出:[1]
示例 3:

输入:[1,1,1,3,3,2,2,2]
输出:[1,2]
 

提示:

1 <= nums.length <= 5 * 104
-109 <= nums[i] <= 109
 

进阶:尝试设计时间复杂度为 O(n)、空间复杂度为 O(1)的算法解决此问题。

package main

import (
	"fmt"
	"hash/maphash"
)

func majorityElement(nums []int) []int {
	var Mp map[int]int
	Mp = make(map[int]int)

	var Len = len(nums)
	var result [] int
	var Big = Len / 3
	for i:=0;i<Len;i++ {
		val, ok := Mp[nums[i]]
		if ok {
			Mp[nums[i]]++
			val++
		}else{
			Mp[nums[i]] = 1
		}
	}

	for it := range Mp {
		fmt.Println(Mp[it])
		if(Mp[it] > Big){
			result = append(result, it)
		}
	}
	return result
}

这篇关于LeetCode-229. 求众数 II的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!