题目
给你一个整数数组 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%的用户
还没最优,有空优化