func thirdMax(nums []int) int { max := make([]int, 3) l := 0 for _, i := range nums { switch l { case 0: max[0] = i l++ case 1: if i == max[0] { continue } if i < max[0] { max[1] = i } else { max[0], max[1] = i, max[0] } l++ case 2: if max[0] == i || max[1] == i { continue } if i < max[1] { max[2] = i } else if i < max[0] { max[1], max[2] = i, max[1] } else { max[0], max[1], max[2] = i, max[0], max[1] } l++ case 3: if max[0] == i || max[1] == i || max[2] == i || i < max[2] { continue } if i < max[1] { max[2] = i } else if i < max[0] { max[1], max[2] = i, max[1] } else { max[0], max[1], max[2] = i, max[0], max[1] } } } if l < 3 { return max[0] } return max[l-1] }