# 747. 至少是其他数字两倍的最大数
力扣原题链接(点我直达) (opens new window)
在一个给定的数组nums
中,总是存在一个最大元素 。
查找数组中的最大元素是否至少是数组中每个其他数字的两倍。
如果是,则返回最大元素的索引,否则返回-1。
示例 1:
输入: nums = [3, 6, 1, 0]
输出: 1
解释: 6是最大的整数, 对于数组中的其他整数,
6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.
1
2
3
4
2
3
4
示例 2:
输入: nums = [1, 2, 3, 4]
输出: -1
解释: 4没有超过3的两倍大, 所以我们返回 -1.
1
2
3
2
3
提示:
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;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18