- 题目描述
在一个给定的数组nums
中,总是存在一个最大元素。
查找数组中的最大元素是否至少是数组中每个其他数字的两倍。
如果是,则返回最大元素的索引,否则返回-1。
- 解决思路
(1)找到数组最大的元素以及最大元素对应的位置。
(2)将数组重新排序。
(3)若排序后最大的数大于第二大的数的两倍,则返回最大元素对应的位置,反之返回-1。
分析:可能排序过程复杂度高,更好的做法是找到最大的元素,再找到第二大的元素。
- C++代码
class Solution {
public:
int dominantIndex(vector<int>& nums) {
int i;
int maxPosition = max_element(nums.begin(),nums.end()) - nums.begin();
int count = nums.size();
sort(nums.begin(), nums.end());
if(nums[count-1] >= (nums[count-2]*2) ){
return maxPosition;
}
else
return -1;
}
};