多数元素

题:

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:

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

最简单的暴力方法是,枚举数组中的每个元素,再遍历一遍数组统计其出现次数。该方法的时间复杂度是 O(N^2)O(N2),会超出时间限制,因此我们需要找出时间复杂度小于 O(N^2)O(N2)

golang code :

func majorityNums(nums []int) int {
sort.Ints(nums)
return nums[len(nums)/2]
}
// 摩尔算法
func majorityNums(nums []int) int {
var count = 0 // 计数
var result = 0
for _, num := range nums {
if count == 0 {
result = num // 假定num为众数
}
if num == result {
count++
} else {
count--
}
}
return result
}

C# code :

public  int majorityNums(int[] nums)
{
var descNums = nums.OrderBy(v => v).ToList();
return descNums[descNums.Count / 2];
}

posted @ 2021-04-01 09:42  For-L  阅读(65)  评论(0)    收藏  举报