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]
}