فهرست منبع

add 'Majority Element' and optimize

tangs 5 سال پیش
والد
کامیت
3da6be1e17
2فایلهای تغییر یافته به همراه57 افزوده شده و 0 حذف شده
  1. 33 0
      tags/bit-manipulation/majorityElement/main.go
  2. 24 0
      tags/bit-manipulation/majorityElement/main_optimize.go

+ 33 - 0
tags/bit-manipulation/majorityElement/main.go

@@ -0,0 +1,33 @@
+package main
+
+import "fmt"
+
+func main() {
+	var nums []int
+
+	nums = []int{1}
+	fmt.Println(majorityElement(nums))
+
+	nums = []int{3, 2, 3}
+	fmt.Println(majorityElement(nums))
+
+	nums = []int{2, 2, 1, 1, 1, 2, 2}
+	fmt.Println(majorityElement(nums))
+}
+
+func majorityElement(nums []int) int {
+	var record = map[int]int{}
+	var index, count int = 0, 0
+	var i int
+	for i = 0; i < len(nums); i++ {
+		if _, ok := record[nums[i]]; !ok {
+			record[nums[i]] = 0
+		}
+		record[nums[i]] = record[nums[i]] + 1
+		if count < record[nums[i]] {
+			count = record[nums[i]]
+			index = nums[i]
+		}
+	}
+	return index
+}

+ 24 - 0
tags/bit-manipulation/majorityElement/main_optimize.go

@@ -0,0 +1,24 @@
+package main
+
+import (
+	"fmt"
+	"sort"
+)
+
+func main() {
+	var nums []int
+
+	nums = []int{1}
+	fmt.Println(majorityElement(nums))
+
+	nums = []int{3, 2, 3}
+	fmt.Println(majorityElement(nums))
+
+	nums = []int{2, 2, 1, 1, 1, 2, 2}
+	fmt.Println(majorityElement(nums))
+}
+
+func majorityElement(nums []int) int {
+	sort.Ints(nums)
+	return nums[len(nums)/2]
+}