前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >747. 至少是其他数字两倍的最大数

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

原创
作者头像
Michel_Rolle
修改2021-03-08 09:57:49
5900
修改2021-03-08 09:57:49
举报
文章被收录于专栏:LeetCode解题LeetCode解题

链接

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

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

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

示例 1:

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

示例 2:

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

提示

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

golang语言版

代码语言:txt
复制
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
}

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档