1. 程式人生 > >747. Largest Number At Least Twice of Others

747. Largest Number At Least Twice of Others

數組 urn else integer input eth 是否 class plan

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:

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.

找數組中的最大值,並判斷是否至少是其他數的兩倍。是的話返回索引,不是的話返回-1.

解決:遍歷數組,找最大值m1和次大值m2,記錄最大值坐標。只要 m1>=2*m2 ,那麽就必然符合條件,返回坐標位置。不然就返回-1.

class Solution {
public
: int dominantIndex(vector<int>& nums) { int m1 = INT_MIN; int m2 = INT_MIN; int key = -1; for (int i=0; i<nums.size(); ++i) { if (nums[i]>m1) { m2 = m1; m1 = nums[i]; key = i; }
else if (nums[i]>m2) m2 = nums[i]; } return m1>=2*m2? key:-1; } };

747. Largest Number At Least Twice of Others