炉火建站,接工程的app软件,展示网站建设的ppt,景区类网站229. 求众数 II
题目描述#xff1a; 给定一个大小为 n 的整数数组#xff0c;找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。
考察重点#xff1a;设超过 ⌊ n/3 ⌋ 次的元素有a个#xff0c;则一定有 ⌊ n/3 ⌋ * a n。即这种元素至多存在2个。 先用摩尔投票法求出最…229. 求众数 II
题目描述 给定一个大小为 n 的整数数组找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。
考察重点设超过 ⌊ n/3 ⌋ 次的元素有a个则一定有 ⌊ n/3 ⌋ * a n。即这种元素至多存在2个。 先用摩尔投票法求出最多的两个元素再判断二者是否超过 ⌊ n/3 ⌋ 。
func majorityElement(nums []int) []int {x, y, lx, ly, len : 0, 0, 0, 0, len(nums)/3for _, num : range nums {if (x num || lx 0) num ! y {x numlx} else if y num || (ly 0) {y numly} else {lx--ly--}}lx, ly 0, 0for _, num : range nums {if num x {lx}if num y {ly}}res : []int{}if lx len{res append(res, x)}if ly len x ! y{res append(res, y)}return res
}