跳转至

747.至少是其他数组两倍的最大数 (Easy)*

题目描述*

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

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

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

示例*

输入: nums = [3, 6, 1, 0]

输出: 1

输入: nums = [1, 2, 3, 4]

输出: -1

提示*

nums 的长度范围在[1, 50]. 每个 nums[i] 的整数范围在 [0, 100].

代码*

遍历找最大值和次大值即可。

class Solution {
public:
    int dominantIndex(vector<int>& nums) {
        if(nums.size() == 1) {
            return 0;
        }
        int maxIndex = 0, secMax = INT_MIN;
        for(int i = 1; i < nums.size(); i++) {
            if(nums[i] > nums[maxIndex]) {
                secMax = nums[maxIndex];
                maxIndex = i;
            }else if(nums[i] > secMax) {
               secMax = nums[i]; 
            }
        }
        return (2 * secMax <= nums[maxIndex]) ? maxIndex : -1;
    }
};

最后更新: July 23, 2022