package com.heu.wsq.leetcode.arr;
/**
* 747. 至少是其他数字两倍的最大数
* @author wsq
* @date 2021/1/16
* 在一个给定的数组nums中,总是存在一个最大元素 。
* 查找数组中的最大元素是否至少是数组中每个其他数字的两倍。
* 如果是,则返回最大元素的索引,否则返回-1。
*
* 示例 1:
* 输入: nums = [3, 6, 1, 0]
* 输出: 1
* 解释: 6是最大的整数, 对于数组中的其他整数,
* 6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.
*
* 链接:https://leetcode-cn.com/problems/largest-number-at-least-twice-of-others
*/
public class DominantIndex {
public int dominantIndex(int[] nums){
int n = nums.length;
if (n == 1){
return 0;
}
int preMax = -1;
int max = -1;
int pos = -1;
for (int i = 0; i < n; i++){
if (nums[i] > max){
int tmp = max;
max = nums[i];
preMax = tmp;
pos = i;
}else if (nums[i] > preMax){
preMax = nums[i];
}
}
return max >= 2 * preMax ? pos : -1;
}
}