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