题目地址:
https://leetcode.com/problems/largest-number-at-least-twice-of-others/
给定一个长 n n n数组 A A A,保证存在唯一的最大值,问这个最大值是否不小于任一别的数字的两倍。如果不是则返回 − 1 -1 −1,否则返回这个最大值的下标。
代码如下:
public class Solution {
public int dominantIndex(int[] nums) {
int max = Integer.MIN_VALUE, idx = -1;
for (int i = 0; i < nums.length; i++) {
if (nums[i] > max) {
max = nums[i];
idx = i;
}
}
for (int x : nums) {
if (x != max && max < 2 * x) {
return -1;
}
}
return idx;
}
}
时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。