1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// @Title: 求众数 II (Majority Element II)
// @Author: 15816537946@163.com
// @Date: 2021-10-22 11:16:51
// @Runtime: 12 ms
// @Memory: 4.9 MB
func majorityElement(nums []int) []int {
	sort.Ints(nums) // 从小到大排序
	cursor := len(nums) / 3
	var counter = 1

	ret := make([]int, 0)
	for i := 0; i < len(nums)-1; i++ {
		if nums[i] != nums[i+1] {
			if counter > cursor {
				ret = append(ret, nums[i])
			}
			counter = 1
		} else {
			counter++
		}
	}

	// check the last one
	if counter > cursor {
		ret = append(ret, nums[len(nums)-1])
	}

	return ret

}