至少是其他数字两倍的最大数
程序员文章站
2024-03-08 08:27:22
...
flag
软件学院大三党,每天一道算法题,第33天
题目介绍
在一个给定的数组nums中,总是存在一个最大元素 。
查找数组中的最大元素是否至少是数组中每个其他数字的两倍。
如果是,则返回最大元素的索引,否则返回-1。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/largest-number-at-least-twice-of-others
思路
首先找到数组里最大的数字,并记下它的index
然后找到数组里第二大的数字:我们将数组中最大数字改成Integer.MinValue,这样遍历一次就能找到第二大的数字,相当于删除了最大数字
将最大数字与第二大数字的二倍进行比较
关键代码
public static int dominantIndex(int[] nums){
if(nums.length==1)
return 0;
int maxIndex=0;
int secondMaxNum=Integer.MIN_VALUE;
int maxNum=Integer.MIN_VALUE;
for(int i=0;i<nums.length;i++){
if(nums[i]>maxNum){
maxNum=nums[i];
maxIndex=i;
}
}
nums[maxIndex]=Integer.MIN_VALUE;
for(int i=0;i<nums.length;i++){
if(nums[i]>secondMaxNum){
secondMaxNum=nums[i];
}
}
if(secondMaxNum*2<=maxNum)
return maxIndex;
else return -1;
}
总结
这道题还是不要用排序了,因为完全可以在O(N)的时间复杂度完成,排序会增加时间复杂度。
上一篇: 1549:最大数
推荐阅读
-
LeetCode-SQL-619. 只出现一次的最大数字
-
至少是其他数字两倍的最大数
-
python实训三 编写函数,接收一个字符串,分别统计大写字母,小写字母,数字,其他字符的个数,并以元组的形式返回结果
-
输入一行字符,分别统计出其中英文,空格,数字和其他字符的个数
-
编写一个程序统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数
-
关于php中数字0与其他变量的相等判断
-
PHP 计算至少是其他数字两倍的最大数的实现代码
-
解决vue中监听input只能输入数字及英文或者其他情况的问题
-
解决vue中监听input只能输入数字及英文或者其他情况的问题
-
解决html input验证只能输入数字,不能输入其他的问题