Problem List

Third Maximum Number

May 31, 2025Go array, sortingeasy

Problem

Performance

Complexity

Go Solution
func thirdMax(nums []int) int {
	if len(nums) <= 2 {
        sort.Ints(nums)
        return nums[len(nums) - 1]
    }

	res := getFirstThree(nums)
    if len(res) < 3 {
        return res[len(res) - 1]
    }

	for i := 3; i < len(nums); i++ {
		if nums[i] > res[0] {
			res = insert(res, nums[i])
		}
	}

	return res[0]
}

func getFirstThree(nums []int) []int {
	i := 0
	m := make(map[int]bool)

	for len(m) < 3 && i < len(nums) {
		m[nums[i]] = true
		i++
	}

	var res []int
	for val, _ := range m {
		res = append(res, val)
	}
    sort.Ints(res)

	return res
}


func insert(nums []int, val int) []int {
    if val == nums[0] || val == nums[1] || val == nums[2] {
        return nums
    }

    nums = append(nums, val)
    sort.Ints(nums)
	return nums[1:]
}

LeetCode Problem Link