Files
codekata-golang/20201226/main.go
2020-12-26 09:12:08 +08:00

55 lines
767 B
Go

package main
import (
"math"
"sort"
)
func main() {
}
func findThirdMax(nums []int) int {
if len(nums) == 0 {
return 0
}
sort.Sort(sort.Reverse(sort.IntSlice(nums)))
if len(nums) < 3 {
return nums[0]
}
v := nums[0]
count := 0
for _, n := range nums {
v = n
if count == 3 {
break
}
if v > n {
count++
}
}
return v
}
func findThirdMax2(nums []int) int {
vs := [3]int{math.MinInt64, math.MinInt64, math.MinInt64}
found := false
for _, n := range nums {
if n == vs[0] || n == vs[1] || n == vs[2] {
continue
}
if n > vs[0] {
vs[0], vs[1], vs[2] = n, vs[0], vs[1]
} else if n > vs[1] {
vs[1], vs[2] = n, vs[1]
} else if n > vs[2] {
found = true
vs[2] = n
}
}
if found {
return vs[2]
}
return vs[0]
}