题目描述:
示例1.
输入: nums = [3, 6, 1, 0]
输出: 1
解释: 6是最大的整数, 对于数组中的其他整数,
6大于数组中其他元素的两倍。6的索引是1, 所以我们返回1.
示例2.
输入: nums = [1, 2, 3, 4]
输出: -1
解释: 4没有超过3的两倍大, 所以我们返回 -1.
思想:
1.创建一个新数组,将nums数组的值copy进新数组
2.将nums数组进行排序,看nums[nums.length-1]/2是否大于等于nums[nums.length-2],如果大于等于就在新数组中寻找nums[nums.length-1]的索引,如果不是,就返回-1。
注意:特殊情况,如果nums数组的长度为1,那么要进行单独判断,不然并不存在nums[nums.length-2],会报 角标越界。对于这种情况,直接返回0
java代码:
class Solution {
public int dominantIndex(int[] nums) {
if(nums==null||nums.length==0){
return -1;
}else if(nums.length==1){
return 0;
}
int[] copy = new int[nums.length];
for(int i=0;i<nums.length;i++){
copy[i]=nums[i];
}
Arrays.sort(nums);
int digit=-1;
if((nums[nums.length-1]/2.0)>=(double)nums[nums.length-2]){
for(int i=0;i<copy.length;i++){
if(copy[i]==nums[nums.length-1]){
digit=i;
}
}
}
return digit;
}
}