Leetcode 169. 多数元素

169. 多数元素 - 力扣(LeetCode) (leetcode-cn.com)

 

 

思路 1:

1. 先对所有元素进行排序

2. 返回位于数组最中间的元素

func majorityElement(nums []int) int {
	lenth:=len(nums)
	sort.Ints(nums)
	return nums[lenth/2]
}

 

思路 2 来自题解 摩尔投票法:

 

1.声明主要数字变量 major 并初始化为0,票数 count 初始化也为0。

2.我们开始遍历数组,遍历到第0个元素时,由于major=0,所以为 major 赋值 num[0], count=1。

3.然后我们向后遍历,如果 item 和 major 是同一个数,则 count+1。如果不是,则 count-1。

4.当count再次为0时,使用新遍历到的 item 作为 major, count 置为1。

5. 依次向后遍历,当遍历完成时,major 即为多数元素。

 

func majorityElement(nums []int) int {
	major := 0
	count := 0
	for _, item := range nums {
		if count==0{
			major=item
		}
        if major==item {
			count++
		}else{
			count--
		}
	}
	return major
}

  

posted @ 2022-04-26 02:34  SoutherLea  阅读(12)  评论(0编辑  收藏  举报