随笔-数组中是否存在一个元素至少是其它元素的两倍

版权声明:中华人民共和国持有版权 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;
    }
}

猜你喜欢

转载自blog.csdn.net/Fly_Fly_Zhang/article/details/84921466
今日推荐