In a given integer array nums, there is always exactly one largest element.

Find whether the largest element in the array is at least twice as much as every other number in the array.

If it is, return the index of the largest element, otherwise return -1.

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.
 

Note:

nums will have a length in the range [1, 50].
Every nums[i] will be an integer in the range [0, 99].

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-number-at-least-twice-of-others
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

找出最大数和第二大数,直接比较条件即可,做好更新就行。

新来的比最大数大,他就是最大数,原来的最大数成了第二大数。

但是开始我丢掉了一种情况,就是新数比最大数小,但是比第二大数大,所以可以更新第二大数。

class Solution {
public:
    int dominantIndex(vector<int>& nums) {
        int maxid=0;
        int max=nums[0];
        int nextid=0;
        int next=0;
        for(int i=1;i<nums.size();i++){
            if(nums[i]>max){
                next=max;
                nextid=maxid;
                maxid=i;
                max=nums[i];
            }else if(nums[i]>next){
                nextid=i;
                next=nums[i];
            }
        }if(max>=2*next){
            return maxid;
        }return -1;
    }
};