专栏首页LeetCode解题747. 至少是其他数字两倍的最大数
原创

747. 至少是其他数字两倍的最大数

链接

在一个给定的数组nums中,总是存在一个最大元素 。

查找数组中的最大元素是否至少是数组中每个其他数字的两倍。

如果是,则返回最大元素的索引,否则返回-1。

示例 1:

输入: nums = [3, 6, 1, 0]
输出: 1
解释: 6是最大的整数, 对于数组中的其他整数,
6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.

示例 2:

输入: nums = [1, 2, 3, 4]
输出: -1
解释: 4没有超过3的两倍大, 所以我们返回 -1.

提示

  • nums 的长度范围在1, 50.
  • 每个 numsi 的整数范围在 0, 100.

golang语言版

func dominantIndex(nums []int) int {
    n := len(nums)
    if n == 1 {
        return 0
    }

    // i1 是 nums 中第 1 大的数的索引号
	// i2 是 nums 中第 2 大的数的索引号
	i1, i2 := 0, 1
	if nums[i1] < nums[i2] {
		i1, i2 = i2, i1
	}

    
	for i := 2; i < n; i++ {
		if nums[i1] < nums[i] {
			i2, i1 = i1, i
		} else if nums[i2] < nums[i] {
			i2 = i
		}
	}

    if nums[i2] == 0 || nums[i1]/nums[i2] >= 2 {
		return i1
	}
	return -1
}

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • LeetCode 747. 至少是其他数字两倍的最大数

    Michael阿明
  • LeetCode 747:至少是其他数字两倍的最大数Largest Number At Least Twice of Other

    在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回-1。

    爱写bug
  • Leetcode747至少是其他数字两倍的最大数

    在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回-1。

    爱写bug
  • LeetCode 0747. 至少是其他数字两倍的最大数

    题目要找到「至少是其他数字两倍的最大数」,可以维护两个数,最大数和第二大的数,最终判断是否最大数>=第二大的数* 2 就可以了~

    Yano_nankai
  • 算法创作|至少是其他数字两倍的最大数

    在一个给定的数组nums中,总是存在一个最大元素 。查找数组中的最大元素是否至少是数组中每个其他数字的两倍。如果是,则返回最大元素的索引,否则返回 -1

    算法与编程之美
  • PHP 计算至少是其他数字两倍的最大数的实现代码

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/largest-number-at-least-twice...

    砸漏
  • 力扣题目汇总(缺失数字,第三大的数,至少是其他数字两倍的最大数)

    小小咸鱼YwY
  • SAP成都研究院飞机哥:程序猿和飞机的不解之缘

    张航和Jerry一样于2007年毕业后加入SAP成都研究院工作至今。进入SAP后的第一个开发部门是SAP Business by Design Infrastr...

    Jerry Wang
  • 早报:AI人才供不应求:应届生年薪50万 没出校门已被抢光

    1、互金专项整治办发文:立即暂停批设互联网小贷牌照 互联网小贷牌照审批遭遇监管喊停!刚刚,女记独家获悉,互联网金融风险专项整治工作领导小组办公室下发《关于立即...

    用户1335017

扫码关注云+社区

领取腾讯云代金券