Example 1:
Input: nums = [3, 6, 1, 0]
Output: 1
Explanation: 6 is the largest integer, and for every other number in the array x,
6 is more than twice as big as x. The index of value 6 is 1, so we return 1.
Example 2:
Input: nums = [1, 2, 3, 4]
Output: -1
Explanation: 4 isn’t at least as big as twice the value of 3, so we return -1.
这道题目的问题可以化简为从数组中找到第一大和第二大的元素,如果第二大元素的两倍小于等于第一大的元素,那么我们就返回第一大元素的下标索引,否则返回-1,值得注意的是,当我们数组中只有一个元素的时候,那么这时候的返回值应该是0。下面是代码:
int dominantIndex(vector<int>& nums) {
if(nums.size()<2)
{
return 0;
}
int maxVal = INT_MIN;
int secondVal = INT_MIN;
int index = -1;
for(int i=0;i<nums.size();i++)
{
if(nums[i]>maxVal)
{
secondVal = maxVal;
maxVal = nums[i];
index = i;
}
else if(nums[i]>secondVal&&nums[i]<maxVal)
{
secondVal = nums[i];
}
}
return maxVal>=2*secondVal?index:-1;
}