在一个给定的数组nums中,总是存在一个最大元素
。
查找数组中的最大元素是否至少是数组中每个其他数字的两倍。
如果是,则返回最大元素的索引,否则返回-1。
示例 1:
输入: nums = [3, 6, 1, 0]
输出: 1
解释: 6是最大的整数, 对于数组中的其他整数,
6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.
示例 2:
输入: nums = [1, 2, 3, 4]
输出: -1
解释: 4没有超过3的两倍大, 所以我们返回 -1.
提示:
nums 的长度范围在[1, 50].nums[i] 的整数范围在
[0, 100].执行用时 :0 ms, 在所有 cpp 提交中击败了100.00%的用户
内存消耗 :8.5 MB, 在所有 cpp 提交中击败了74.18%的用户
int dominantIndex(vector<int>& nums) {
int index = 0, maxNum = nums[0];
for (size_t i = 1; i < nums.size(); ++i) {
if (maxNum < nums[i]) {
maxNum = nums[i];
index = i;
}
}
sort(nums.begin(), nums.end());
for (int i = nums.size() - 2; i >= 0; --i) {
if (nums[i] * 2 > maxNum) return -1;
}
return index;
}