力扣做题747

题目

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-number-at-least-twice-of-others
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

我的答案

/**
 * @param {number[]} nums
 * @return {number}
 */
 var dominantIndex = function(nums) {
    //假设nums是数组,且都是整数

    //根据题目示例,只有一个数字的话就返回0
    if(nums.length === 1){
        return 0
    }

    let 是否大两倍 = false
    let 最大数 = nums[0]
    let 第二大数 = 0
    let maxId = 0
    for (let i = 0; i<nums.length;i++){
        let 当前数=nums[i]
        if(当前数>最大数){
            第二大数 = 最大数
            最大数 = 当前数
            maxId = i
        } else if (当前数<最大数){
            第二大数 = Math.max(第二大数,当前数)
        }
        是否大两倍 = 最大数 >= 第二大数*2
    }
    return 是否大两倍 ? maxId:-1
};

提交了5次才通过:(

执行用时:60 ms, 在所有 JavaScript 提交中击败了96.55%的用户

内存消耗:39 MB, 在所有 JavaScript 提交中击败了47.70%的用户

还没最优,有空优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值