📅  最后修改于: 2023-12-03 15:10:21.990000             🧑  作者: Mango
对于一个整数类型的数组 nums
,如果存在一个数 val
,满足 val
大于等于数组中的每个其他元素的两倍,则称 val
是数组中的最大元素。
给定一个整数类型的数组 nums
,编写一个函数 dominantIndex
来判断它是否存在一个数 val
,满足 val
是数组中的最大元素。如果存在,返回 val
的下标,否则返回 -1
。
示例1:
输入:nums = [3, 6, 1, 0]
输出:1
解释:6 是最大的整数,对于所有其他数字,6 大于等于它们的两倍。6 的索引是 1,所以我们返回 1。
示例2:
输入:nums = [1, 2, 3, 4]
输出:-1
解释:4 不是数组中最大的整数,3 是它的两倍,但是 3 并不大于其他所有元素中的最大值,所以我们不能确定 4 是否符合条件。因此,我们返回 -1。
解题思路:
Java代码:
public class Solution {
public int dominantIndex(int[] nums) {
if (nums == null || nums.length == 0) {
return -1;
}
int maxNum = nums[0];
int maxIndex = 0;
for (int i = 1; i < nums.length; i++) {
if (nums[i] > maxNum) {
maxNum = nums[i];
maxIndex = i;
}
}
for (int i = 0; i < nums.length; i++) {
if (i != maxIndex && nums[i] * 2 > maxNum) {
return -1;
}
}
return maxIndex;
}
}
Python代码:
class Solution:
def dominantIndex(self, nums: List[int]) -> int:
if not nums:
return -1
max_num = max(nums)
max_index = nums.index(max_num)
for i, n in enumerate(nums):
if i != max_index and n * 2 > max_num:
return -1
return max_index
时间复杂度:O(n),其中n是数组的长度。 空间复杂度:O(1)。