0
点赞
收藏
分享

微信扫一扫

leetcode每日一题:至少是其他数字两倍的最大数(javascript)

他说Python 2022-01-13 阅读 35

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

难度:简单

题目:

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

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

思路:

先判断初始数组的长度,有示例可知,当长度为≤1时,返回0。

当长度>1时,先比较nums[0]和nums[1]的大小,并存储index,然后从下标为0开始遍历数据,存储最大值和次大值以及index,遍历结束后检查最大值是否是次大值的两倍以上,如果是则返回最大值的下标。

因为只需要额外开辟三个数据的存储空间所以,空间复杂度为O(1),

因为每个数据都要遍历,所以时间复杂度为O(n)。

代码:

var dominantIndex = function(nums) {

    if(nums.length <=1){

        return 0

    }

    var largest = nums[0] > nums[1] ? nums[0] : nums[1]

    var index =  nums[0] > nums[1] ? 0 : 1

    var seclargest = nums[0] > nums[1] ? nums[1] : nums[0]

    for(let i = 2 ; i < nums.length ; i++){

        if(nums[i] > largest && nums[i] > seclargest){

            seclargest = largest

            largest = nums[i]

            index = i

        }else if(nums[i] < largest && nums[i] > seclargest){

            seclargest = nums[i]

        }else if(nums[i] < seclargest){

            continue

        }

    }

    if(largest >= seclargest * 2){

        return index

    }else{

        return -1

    }

};

举报

相关推荐

0 条评论