747 至少是其他数字两倍的最大数-简单

给你一个整数数组 nums ,其中总是存在 唯一的 一个最大整数 。

请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回 -1 。

分析:

题目要求最大元素至少是数组中每个其他数字的两倍,因此只需要检查最大数和次大数即可,只要最大数是次大数的两倍,则返回结果,否则返回-1。

// date 2022/10/07
func dominantIndex(nums []int) int {
    if len(nums) <= 1 {
        return len(nums)-1
    }
    max1, max2 := 0, 0
    res := -1
    for i, v := range nums {
        if v > max1 {
            max2 = max1
            max1 = v
            res = i
        } else if v > max2 {
            max2 = v
        }
    }
    if max1 >= 2 * max2 {
        return res
    }
    return -1
}

最后更新于