747. 至少是其他数字两倍的最大数
给你一个整数数组 nums
,其中总是存在 唯一的 一个最大整数 。
请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 。如果是,则返回 最大元素的下标 ,否则返回 -1
。
示例 1:
输入:nums = [3,6,1,0] 输出:1 解释:6 是最大的整数,对于数组中的其他整数,6 大于数组中其他元素的两倍。6 的下标是 1 ,所以返回 1 。
示例 2:
输入:nums = [1,2,3,4] 输出:-1 解释:4 没有超过 3 的两倍大,所以返回 -1 。
示例 3:
输入:nums = [1] 输出:0 解释:因为不存在其他数字,所以认为现有数字 1 至少是其他数字的两倍。
提示:
1 <= nums.length <= 50
0 <= nums[i] <= 100
nums
中的最大元素是唯一的
终于到了简单题时间,普天同庆了属于是☆*: .?. o(≧▽≦)o .?.:*☆
这次的题目很简单,题干说要求最大值至少是其他值的两倍,事实上我们只需要将最大值和第二大的值进行比较即可,如果最大值比第二大值大两倍,那么其他值必定是两倍以上
所以我们先写找出最大值和第二大值的方法
最大值:
public int maxNumber(int[] nums){int max=0;for (int i=0;i<nums.length;i++){if (nums[i]>nums[max]){max=i;}}return max;}
第二大值:
public int secondMaxNumber(int[] nums,int max){int secondMax=0;if(max==0){secondMax=1;}for (int i=0;i<nums.length;i++){if (nums[i]>nums[secondMax] && nums[i]<nums[max]){secondMax=i;}}return secondMax;}
然后进行比较就行
数组单一元素的情况我们可以单独列出来
public int dominantIndex(int[] nums) {int max=0;int secondMax=0;if(nums.length==1){return 0;}max=maxNumber(nums);secondMax=secondMaxNumber(nums,max);if (nums[secondMax]*2<=nums[max]){return max;}else {return -1;}}