版权声明:中华人民共和国持有版权 https://blog.csdn.net/Fly_Fly_Zhang/article/details/84921466
问题:
在一个给定的数组nums中,总是存在一个最大元素 。
查找数组中的最大元素是否至少是数组中每个其他数字的两倍。
如果是,则返回最大元素的索引,否则返回-1。
思路:只需要找出数组中最大的两个元素即可,最大的是第二大的两倍。
class Solution {
public int dominantIndex(int[] nums) {
int index=0;
if(nums.length==1){
return 0;
}
int max=nums[0]; //第一大
int max1=nums[1]; //第二大
for(int i=1;i<nums.length;i++){
if(max<=nums[i]){
max1=max;
max=nums[i];
index=i;
}else if(max>nums[i]&& max1<nums[i]){ // 当前元素小于第一大,大于第二大,替换掉第二大;
max1=nums[i];
}
}
if(max/2>=max1) //
return index;
return -1;
}
}