在Go(Golang)中找出数组中的多数元素的方法

137 阅读1分钟

概述

目的是在一个给定的数组中找到多数元素。多数元素是指在一个给定的数组中出现超过n/2次的元素, n是数组的长度.

例子1

Input: [2, 1, 2, 2, 3]
Output: 2

例子2

Input: [1]
Output: 1

程序

以下是相同的程序

package main

import "fmt"

func majorityElement(nums []int) int {
	lenNums := len(nums)

	if lenNums == 1 {
		return nums[0]
	}

	numsMap := make(map[int]int)

	for i := 0; i < lenNums; i++ {
		_, ok := numsMap[nums[i]]
		if ok {
			numsMap[nums[i]] = numsMap[nums[i]] + 1
			if numsMap[nums[i]] > lenNums/2 {
				return nums[i]
			}
		} else {
			numsMap[nums[i]] = 1
		}
	}

	return 0

}

func main() {
	output := majorityElement([]int{2, 1, 2, 2, 3})
	fmt.Println(output)

	output = majorityElement([]int{1})
	fmt.Println(output)
}

输出。

2
1